Developpez.com - Rubrique Python

Le Club des Développeurs et IT Pro

Python, de zéro - Un cours complet pour apprendre la programmation Python,

Par Frédéric Lang

Le 2022-09-18 17:39:40, par Sve@r, Expert éminent sénior
Chers membres du club,

J'ai le plaisir de vous présenter ce tutoriel :

Python, de zéro
Un cours qui se veut complet sur l'apprentissage de la programmation Python
Cet article est un cours qui se veut complet sur l'apprentissage de la programmation Python.

Il présentera comment faire ses premiers pas en Python et comprendre sa syntaxe, comment créer (et exécuter) ses premiers scripts, son typage allant du plus simple au plus complexe.

Il détaillera les chaînes, leur encodage et les différentes façons de les afficher. Il décrira aussi les fonctions et leurs paramètres dans différentes configurations, les itérables, les générateurs et la syntaxe des fameuses listes de compréhension. Puis il abordera l'objet en Python avec les classes et les métaclasses et enfin le gestionnaire de contexte et les décorateurs.

Et il terminera avec quelques petits exemples variés.

Il se veut complet, mais Python est vaste, donc toutes les notions présentées seront expliquées le plus clairement possible et généralement accompagnées d'un exemple ou deux, mais sans s'y attarder plus que cela, laissant le lecteur désireux de les approfondir devoir chercher ailleurs les détails ou exercices qui lui manqueront, comme sur cette page dédiée à différents exercices Python.

Bonne lecture

Retrouvez Les meilleurs cours et tutoriels pour apprendre Python.
  Discussion forum
26 commentaires
  • Sve@r
    Expert éminent sénior
    Merci merci, ça fait plaisir
    Mais en fait j'attends avec inquiétude l'avis de Wiztricks...

    Pour les métaclasses moi non plus je ne les utilise jamais et c'est pour ça que ce chapitre a été l'un des plus difficiles à écrire. En fait, le plus difficile, c'est surtout de trouver des exemples le plus clairs possibles qui illustrent une notion peu utilisée.
  • zancrows
    Membre averti
    Super tuto, je le trouve très clair et synthétique !

    J'ai noté une petite erreur dans la section "IV-8. True, False, None" (je ne sais pas si c'est le bon endroit pour remonter ça)
    Il manque une double quote ici:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> "" == False
    False
    >>> "" == True
    False
    >>> bool("") == False
    True
    >>> print(ok" if not "" else "bad") # <- ici
    ok
    Je poursuis la lecture
  • Pyramidev
    Expert éminent
    Envoyé par Sve@r 
    Chers membres du club,

    J'ai le plaisir de vous présenter ce tutoriel :


    Bravo pour l'effort. Je n'aurais pas eu la motivation d'écrire un tuto aussi long.

    Envoyé par papajoker 
    - Générateurs, je trouve très réducteur de ne voir que le "temporel" comme argument pour l'utiliser… Pour moi, ne consommer en mémoire qu'un élément et non une liste entière est le premier argument

    Envoyé par Sve@r 
    Ben pour tout dire, la mémoire était mon argument au début, celui que je présentais en cours quand j'expliquais les générateurs. Et puis un élève a dit "oui, effectivement on gagne de la mémoire mais en contrepartie on appelle plusieurs fois la fonction et chaque appel engendre un coût", argument sur lequel je n'ai pas su quoi répondre (probablement parce qu'il est exact ).
    Donc ensuite j'ai réfléchi pour trouver dans quel cas le générateur répondrait à un vrai besoin, besoin tellement nécessaire que l'inconvénient des appels multiples n'aurait plus de pertinence => et j'ai trouvé le temporel.

    Du coup, je viens de lire le chapitre du tuto sur les générateurs.

    Le problème de consommation de mémoire peut s'illustrer ainsi : par exemple, admettons que l'on écrive un code Python qui, pour un dossier donné, parcourt tous les fichiers qu'il contient récursivement et, pour chaque fichier, lit toutes les lignes, par exemple pour chercher des occurrences d'une chaîne (comme grep). Il y a plusieurs manières différentes de coder cela. Mais, si on code une fonction qui retourne un itérable de lignes et si le dossier est très gros, il vaut mieux que la fonction retourne un générateur au lieu de charger d'un coup en mémoire le contenu récursif de tout le dossier.

    Ce qui est bien avec cet exemple, c'est qu'on peut enchaîner sur le temporel ainsi : comme avec grep, on peut commencer à afficher des résultats de recherche au fur et à mesure sans avoir fini de parcourir tous les fichiers.
  • Malick
    Community Manager
    Salut,

    Envoyé par Hominidé
    Bonjour,
    Je constate que le cours n'est pas référencé sur la page bouton 'TUTORIELS PYTHON' : https://python.developpez.com/cours/
    ...
    Effectivement, mais son intégration était en cours. On était en train d'en profiter également pour faire une mise à jour globale de la page, raison pour laquelle cela prend un peu de temps.
  • C'est nuuuul, enlevez lui ses trophées !!!

    Sacré boulot ! Je t'en offre un de plus

  • Diablo76
    Membre habitué
    Super boulot, très complet, clair et ludique

    Il convient aussi bien aux débutants qu'a un publique expérimenté.

    J'ai adoré le chapitre sur les métaclasses, bien que je ne les utilise jamais, mais ça m'a rappelé les métatables en Lua pour faire du pseudo OO.

    Encore bravo pour cet énorme travail.
  • disedorgue
    Expert éminent sénior
    je ne dirais que:

  • f-leb
    Responsable Arduino et Systèmes Embarqués
    Un tuto de 20 pages aurait suffi, mais non il a fallu qu'il nous ponde un opus en 27 chapitres et 160 pages

    Merci Sve@r pour ce cours de référence, et respect !
  • papajoker
    Expert confirmé
    Bravo pour le travail herculéen

    pas encore bien lu car il me faudrait au moins une semaine. Au premier regard :
    - match vraiment très restrictif : c'est comme présenter f-string mais sans une allusion au formatage
    - Générateurs, je trouve très réducteur de ne voir que le "temporel" comme argument pour l'utiliser… Pour moi, ne consommer en mémoire qu'un élément et non une liste entière est le premier argument
    - context manager
    préambule et utilisation est en fait un seul cas particulier : les fichiers, puisque pas indiqué, on pense que c'est la généralité. Alors que le troisième chapitre est justement un peu plus global.
  • Sve@r
    Expert éminent sénior
    Envoyé par papajoker
    - match vraiment très restrictif : c'est comme présenter f-string mais sans une allusion au formatage
    Hé oui, ça a fait partie des trucs rajoutés à la va comme je te pousse, style "oh zut l'instruction match vient d'arriver, il faut que j'en parle"...

    Envoyé par papajoker
    - Générateurs, je trouve très réducteur de ne voir que le "temporel" comme argument pour l'utiliser… Pour moi, ne consommer en mémoire qu'un élément et non une liste entière est le premier argument
    Ben pour tout dire, la mémoire était mon argument au début, celui que je présentais en cours quand j'expliquais les générateurs. Et puis un élève a dit "oui, effectivement on gagne de la mémoire mais en contrepartie on appelle plusieurs fois la fonction et chaque appel engendre un coût", argument sur lequel je n'ai pas su quoi répondre (probablement parce qu'il est exact ).
    Donc ensuite j'ai réfléchi pour trouver dans quel cas le générateur répondrait à un vrai besoin, besoin tellement nécessaire que l'inconvénient des appels multiples n'aurait plus de pertinence => et j'ai trouvé le temporel.

    Envoyé par papajoker
    - context manager
    préambule et utilisation est en fait un seul cas particulier : les fichiers, puisque pas indiqué, on pense que c'est la généralité.
    Oui je comprends. Le souci c'est "comment expliquer une notion nouvelle". Je n'ai pas trouvé d'autre moyen que prendre un exemple en montrant comment peu à peu la notion finit par devenir nécessaire, en montrant que telle autre façon de faire est possible mais pas forcément pratique etc. Et puis bon, le préambule commence par une phrase expliquant le but du truc, puis la phrase suivante commence par "prenons un exemple" donc on voit bien que c'est un exemple ; je fais confiance au lecteur pour qu'une fois les chapitres 1 et 2 terminés, il se dise tout seul "ah oui, et si ça marche pour un fichier, ça doit pouvoir marcher pour tout le reste"...

    Envoyé par papajoker
    Alors que le troisième chapitre est justement un peu plus global.
    C'était le but: chapitres 1 et 2: explications détaillées, avec un exemple détaillé, et chapitre 3: élargissement à d'autres possibilités