formation:python-essentiel
1. Pourquoi Python ?
Arguments classiques
accessibilité
“shell” est le comportement par défaut
multiplateforme
introspection
Arguments modernes
langage de glu
spécialisations (calculs, etc.)
écriture “pythonique”
“PEP” : Python Enhancement Proposals - proposition d'amélioration de Python
efficacité du bytecode
2. Puissance et limites
Concepts propres au langage
deux concepts-clé d'adoption : “clarté” et arbres syntaxiques abstraits
“duck typing”
exemple du “manager context” (“with”)
interprétation = expansion
exemple avec le formatage des chaînes
approche des différences entre “chaîne de caractères” (“str”) et séquences de bits (“bytes”)
sucre syntaxique et hack de performance
retour “multiple”
étoiles / double étoiles
boucles vs listes en compréhension
Concepts propres à l'interpréteur classique CPython
le GIL (“Global Interpreter Lock”)
notions d’interprétation (exécutable)
les étapes
analyse syntaxique
analyse sémantique
compilation en “bycode”)
variable et comptage par références
“multiprocessing” / “subprocess” ; “thread” et “green thread”
Python est “lent” s'il est mal utilisé
pas que Python… C + TCL
Paradigmes
impératif
impératif : les opérations à faire [vs] déclaratif : l'état désiré
objet
représentation d'un objet en mémoire
méthodes et propriétés
surcharge et classe fondamentale
fonctionnel (1958, McCarthy)
est une variante de la programmation déclarative
fonctions de premier niveau
immuabilité et transparence référentielle
lambda
Exemples des différences de paradigmes
impératif ⇒ état global, mutabilité
la séquence d'instructions
l'assignation ou affectation
l'instruction conditionnelle
la boucle
les (em)branchements
fonctionnel ⇒ expression locale, immuabilité
pureté
“expressivité”
expressions
valeurs
fonctions (sous-ensembles des valeurs)
inférence (typage des valeurs comme paramètres de fonction)
Nb :
3. Concepts-clé de la programmation pythonique
polymorphisme
“duck typing” jusqu'à la base originale (“object” : méthodes et attributs fondamentaux, indépassables)
héritage
typage d'arguments (hack)
portée des variables
création de “fermetures” (“closure”) → lambda
application aux classes (singleton)
surcharge locale (appel d'une variable globale)
modules
gestion des espaces de nom
principe de factorisation
chemin de chargement et appel (ex. “globale” dans un module)
(simili-)macro et génération (dont documentation)
texte ↔ code (“repr”, “compile”, etc.)
modules “parser” et “ast”
création de documentation avec “pydoc”
décorateurs
4. Typage
typage général
Python n'est pas typé…
… mais Python est typé
types natifs et types définis
natifs :
numériques
séquences
dictionnaires
classes
instances
exceptions
natifs étendus :
classe (cf “dict”)
module (dont “collections.*” ; cf “class”)
fonction et méthode (cf “class”)
définis lors de l'exécution ⇒ par défaut dans l'interpréteur CPython et ceux de l'utilisateur
le typage avancé
types mutables et non-mutables
typage et liens logiques ⇒ annotation
module 'typing'
appel de fonction “C” ⇒ proxy de paramétrage
module 'ctypes'
Bonus
les 7 primitives de programmation interprétée (vision classique)
Forth vs LISP : les deux familles originales
cas du C
cas de l'assembleur
notion avancée de macro
créer un compilateur d'un langage à partir de ce langage
formation/python-essentiel.txt · Dernière modification : 2024/01/06 13:02 de 127.0.0.1