Table des matières

Formation Python : l'essentiel

1. Pourquoi Python ?

Arguments classiques

  1. accessibilité
  2. “shell” est le comportement par défaut
  3. multiplateforme
  4. introspection

Arguments modernes

  1. langage de glu
  2. spécialisations (calculs, etc.)
  3. écriture “pythonique”
    1. “PEP” : Python Enhancement Proposals - proposition d'amélioration de Python
    2. efficacité du bytecode

2. Puissance et limites

Concepts propres au langage

  1. deux concepts-clé d'adoption : “clarté” et arbres syntaxiques abstraits
  2. “duck typing”
    1. exemple du “manager context” (“with”)
  3. interprétation = expansion
    1. exemple avec le formatage des chaînes
    2. approche des différences entre “chaîne de caractères” (“str”) et séquences de bits (“bytes”)
  4. sucre syntaxique et hack de performance
    1. retour “multiple”
    2. étoiles / double étoiles
    3. boucles vs listes en compréhension

Concepts propres à l'interpréteur classique CPython

  1. le GIL (“Global Interpreter Lock”)
  2. notions d’interprétation (exécutable)
    1. les étapes
      • analyse syntaxique
      • analyse sémantique
      • compilation en “bycode”)
    2. variable et comptage par références
    3. “multiprocessing” / “subprocess” ; “thread” et “green thread”
  3. Python est “lent” s'il est mal utilisé
  4. pas que Python… C + TCL

Paradigmes

  1. impératif
    1. impératif : les opérations à faire [vs] déclaratif : l'état désiré
  2. objet
    1. représentation d'un objet en mémoire
    2. méthodes et propriétés
    3. surcharge et classe fondamentale
  3. fonctionnel (1958, McCarthy)
    1. est une variante de la programmation déclarative
    2. fonctions de premier niveau
    3. immuabilité et transparence référentielle
    4. lambda

Exemples des différences de paradigmes

  1. impératif ⇒ état global, mutabilité
    1. la séquence d'instructions
    2. l'assignation ou affectation
    3. l'instruction conditionnelle
    4. la boucle
    5. les (em)branchements
  2. fonctionnel ⇒ expression locale, immuabilité
    1. pureté
    2. “expressivité”
      1. expressions
      2. valeurs
      3. fonctions (sous-ensembles des valeurs)
    3. inférence (typage des valeurs comme paramètres de fonction)

Nb :

3. Concepts-clé de la programmation pythonique

  1. polymorphisme
    1. “duck typing” jusqu'à la base originale (“object” : méthodes et attributs fondamentaux, indépassables)
    2. héritage
    3. typage d'arguments (hack)
  2. portée des variables
    1. création de “fermetures” (“closure”) → lambda
    2. application aux classes (singleton)
    3. surcharge locale (appel d'une variable globale)
  3. modules
    1. gestion des espaces de nom
    2. principe de factorisation
    3. chemin de chargement et appel (ex. “globale” dans un module)
  4. (simili-)macro et génération (dont documentation)
    1. texte ↔ code (“repr”, “compile”, etc.)
      1. modules “parser” et “ast”
      2. création de documentation avec “pydoc”
    2. décorateurs

4. Typage

  1. typage général
    1. Python n'est pas typé…
    2. … mais Python est typé
    3. types natifs et types définis
      1. natifs :
        1. numériques
        2. séquences
        3. dictionnaires
        4. classes
        5. instances
        6. exceptions
      2. natifs étendus :
        1. classe (cf “dict”)
        2. module (dont “collections.*” ; cf “class”)
        3. fonction et méthode (cf “class”)
      3. définis lors de l'exécution ⇒ par défaut dans l'interpréteur CPython et ceux de l'utilisateur
  2. le typage avancé
    1. types mutables et non-mutables
    2. typage et liens logiques ⇒ annotation
      1. module 'typing'
    3. appel de fonction “C” ⇒ proxy de paramétrage
      1. module 'ctypes'

Bonus

  1. les 7 primitives de programmation interprétée (vision classique)
  2. Forth vs LISP : les deux familles originales
  3. cas du C
  4. cas de l'assembleur
  5. notion avancée de macro
  6. créer un compilateur d'un langage à partir de ce langage