FAQ générale sur Python

Informations générales

Qu'est-ce que Python ?

Python est un langage de programmation interprété, interactif et orienté objet. Il intègre des modules, des exceptions, un typage dynamique, des types de données dynamiques de très haut niveau et des classes. Il gère de multiples paradigmes de programmation au-delà de la programmation orientée objet, tels que la programmation procédurale et fonctionnelle. Python combine une puissance remarquable avec une syntaxe très claire. Il possède des interfaces avec de nombreux appels système et bibliothèques, ainsi qu'avec divers systèmes d'interfaces graphiques, et il peut être étendu avec du C ou du C++. Il est également utilisable comme langage d'extension pour les applications qui nécessitent une interface de programmation. Enfin, Python est portable : il fonctionne sur de nombreuses variantes d'Unix, y compris Linux et macOS, et sur Windows.

Pour en savoir plus, commencez par Le tutoriel Python. Le « Guide des Débutants pour Python » renvoie vers d'autres tutoriels et ressources d'initiation pour apprendre Python.

Qu'est ce que la Python Software Foundation ?

La Python Software Foundation (PSF) est une organisation indépendante à but non lucratif qui détient les droits d'auteur sur les versions Python 2.1 et plus récentes. La mission de la PSF est de faire progresser les technologies ouvertes (open source) relatives au langage de programmation Python et de promouvoir son utilisation. Le page d'accueil de la PSF se trouve à l'adresse suivante : https://www.python.org/psf/.

Si vous utilisez Python et que vous le trouvez utile, merci de contribuer par le biais de la page de donation de la PSF.

Pourquoi Python a été créé ?

Voici un très bref résumé de comment tout a commencé, écrit par Guido van Rossum (puis traduit en français) :

J'avais une expérience complète avec la mise en œuvre du langage interprété ABC au sein du CWI, et en travaillant dans ce groupe j'ai appris beaucoup à propos de la conception de langage. C'est l'origine de nombreuses fonctionnalités de Python, notamment l'utilisation de l'indentation pour le groupement et l'inclusion de types de très haut niveau (bien que dans les détails ils soient tous différents dans Python).

J'avais un certain nombre de différends avec le langage ABC, mais j'aimais aussi beaucoup de ses fonctionnalités. Il était impossible d'étendre le langage ABC (ou ses implémentations) pour remédier à mes réclamations -- en vérité le manque d'extensibilité était l'un des plus gros problème. J'avais un peu d'expérience avec l'utilisation de Modula-2+ et j'en ai parlé avec les concepteurs de Modula-3 et j'ai lu le rapport sur Modula-3. Modula-3 est à l'origine de la syntaxe et de la sémantique utilisée pour les exceptions, et quelques autres fonctionnalités en Python.

Je travaillais sur un groupe de systèmes d'exploitation distribués Amoeba au CWI. Nous avions besoin d'un meilleur moyen pour gérer l'administration système qu'écrire un programme en C ou en script Bourne shell, puisque l'Amoeba avait sa propre interface d'appels système qui n'était pas facilement accessible depuis les scripts Bourne shell. Mon expérience avec le traitement des erreurs dans l'Amoeba m'a vraiment fait prendre conscience de l'importance des exceptions en tant que fonctionnalité d'un langage de programmation.

Il m'est venu à l'esprit qu'un langage de script avec une syntaxe comme ABC mais avec un accès aux appels systèmes d'Amoeba remplirait les besoins. J'ai réalisé que ce serait idiot d'écrire un langage spécifique à Amoeba, donc j'ai décidé que j'avais besoin d'un langage qui serait généralement extensible.

Pendant les vacances de Noël 1989, j'avais beaucoup de temps à disposition, donc j'ai décidé de faire un essai. Durant l'année suivante, j'ai encore beaucoup travaillé dessus sur mon propre temps. Python a été utilisé dans le projet Amoeba avec un succès croissant, et les retours de mes collègues m'ont permis d'ajouter beaucoup des premières améliorations.

En Février 1991, juste après un peu plus d'un an de développement, j'ai décidé de le poster sur USENET. Le reste se trouve dans le fichier « Misc/HISTORY ».

Pour quoi Python est-il fait ?

Python est un langage de programmation haut niveau généraliste qui peut être utilisé pour pallier à différents problèmes.

The language comes with a large standard library that covers areas such as string processing (regular expressions, Unicode, calculating differences between files), internet protocols (HTTP, FTP, SMTP, XML-RPC, POP, IMAP), software engineering (unit testing, logging, profiling, parsing Python code), and operating system interfaces (system calls, filesystems, TCP/IP sockets). Look at the table of contents for La bibliothèque standard to get an idea of what's available. A wide variety of third-party extensions are also available. Consult the Python Package Index to find packages of interest to you.

Comment fonctionne le numérotage des versions de Python ?

Python versions are numbered "A.B.C" or "A.B":

  • A is the major version number -- it is only incremented for really major changes in the language.

  • B is the minor version number -- it is incremented for less earth-shattering changes.

  • C is the micro version number -- it is incremented for each bugfix release.

See PEP 6 for more information about bugfix releases.

Toutes les sorties ne concernent pas la correction de bogues. A l'approche de la sortie d'une nouvelle version majeure, une série de versions de développement sont créées, dénommées alpha, beta, release candidate. Les alphas sont des versions primaires dans lesquelles les interfaces ne sont pas encore finalisées; ce n'est pas inattendu de voir des changements d'interface entre deux versions alpha. Les betas sont plus stables, préservent les interfaces existantes mais peuvent ajouter de nouveaux modules, les release candidate sont figées, elles ne font aucun changement à l'exception de ceux nécessaires pour corriger des bogues critiques.

Alpha, beta and release candidate versions have an additional suffix:

  • The suffix for an alpha version is "aN" for some small number N.

  • The suffix for a beta version is "bN" for some small number N.

  • The suffix for a release candidate version is "rcN" for some small number N.

In other words, all versions labeled 2.0aN precede the versions labeled 2.0bN, which precede versions labeled 2.0rcN, and those precede 2.0.

Vous pouvez aussi trouver des versions avec un signe « + » en suffixe, par exemple « 2.2+ ». Ces versions sont non distribuées, construites directement depuis le dépôt de développement de CPython. En pratique, après la sortie finale d'une version mineure, la version est augmentée à la prochaine version mineure, qui devient la version a0, c'est-à-dire 2.4a0.

Voir aussi la documentation pour for sys.version, sys.hexversion, et sys.version_info.

Comment obtenir une copie du code source de Python ?

La dernière version du code source déployée est toujours disponible sur python.org, à https://www.python.org/downloads/. Le code source de la dernière version en développement peut être obtenue à https://github.com/python/cpython/.

Le code source est dans une archive gzippée au format tar, elle contient le code source C complet, la documentation formatée avec Sphinx, les libraires Python, des exemples de programmes, et plusieurs morceaux de code utiles distribuables librement. Le code source sera compilé et prêt à fonctionner immédiatement sur la plupart des plateformes UNIX.

Consultez la section Premiers pas du Guide des Développeurs Python pour plus d'informations sur comment obtenir le code source et le compiler.

Comment obtenir la documentation de Python ?

La documentation standard pour la version stable actuelle est disponible à https://docs.python.org/3/. Des versions aux formats PDF, texte et HTML sont aussi disponibles à https://docs.python.org/3/download.html.

The documentation is written in reStructuredText and processed by the Sphinx documentation tool. The reStructuredText source for the documentation is part of the Python source distribution.

Je n'ai jamais programmé avant. Existe-t-il un tutoriel Python ?

Il y a de nombreux tutoriels et livres disponibles. La documentation standard inclut Le tutoriel Python.

Consultez le Guide du Débutant afin de trouver des informations pour les développeurs Python débutants, incluant une liste de tutoriels.

Y a-t-il un forum ou une liste de diffusion dédié à Python ?

Il y a un forum, comp.lang.python et une liste de diffusion, python-list. Le forum et la liste de diffusion sont des passerelles l'un vers l'autre -- si vous pouvez lire les news ce n'est pas inutile de souscrire à la liste de diffusion. comp.lang.python a beaucoup d'activité, il reçoit des centaines de messages chaque jour, et les lecteurs du réseau Usenet sont souvent plus capables de faire face à ce volume.

Les annonces pour les nouvelles versions et événements peuvent êtres trouvées dans comp.lang.python.announce, une liste diminuée peu active qui reçoit environ 5 messages par jour. C'est disponible à liste de diffusion des annonces Python.

Plus d'informations à propos des autres listes de diffusion et forums peuvent être trouvées à https://www.python.org/community/lists/.

Comment obtenir une version bêta test de Python ?

Les versions alpha et bêta sont disponibles depuis https://www.python.org/downloads/. Toutes les versions sont annoncées sur les newsgroups comp.lang.python et comp.lang.python.announce ainsi que sur la page d'accueil de Python à https://www.python.org/; un flux RSS d'actualités y est aussi disponible.

Vous pouvez aussi accéder aux de Python en développement grâce à Git. Voir Le Guide du Développeur Python pour plus de détails.

Comment soumettre un rapport de bogues ou un correctif pour Python ?

To report a bug or submit a patch, use the issue tracker at https://github.com/python/cpython/issues.

Pour davantage d'informations sur comment Python est développé, consultez le Guide du Développeur Python.

Existe-t-il des articles publiés au sujet de Python auxquels je peux me référer ?

C'est probablement mieux de vous référer à votre livre favori à propos de Python.

Le tout premier article à propos de Python a été écrit en 1991 et est maintenant obsolète.

Guido van Rossum et Jelke de Boer, « Interactively Testing Remote Servers Using the Python Programming Language », CWI Quarterly, Volume 4, Issue 4 (December 1991), Amsterdam, pp 283--303.

Y a-t-il des livres au sujet de Python ?

Oui, il y en a beaucoup, et d'autres sont en cours de publication. Voir le wiki python à https://wiki.python.org/moin/PythonBooks pour avoir une liste.

Vous pouvez aussi chercher chez les revendeurs de livres en ligne avec le terme « Python » et éliminer les références concernant les Monty Python, ou peut-être faire une recherche avec les termes « langage » et « Python ».

Où www.python.org est-il localisé dans le monde ?

The Python project's infrastructure is located all over the world and is managed by the Python Infrastructure Team. Details here.

Pourquoi le nom Python ?

Quand il a commencé à implémenter Python, Guido van Rossum a aussi lu le script publié par "Monty Python's Flying Circus", une série comique des années 1970 diffusée par la BBC. Van Rossum a pensé qu'il avait besoin d'un nom court, unique, et un peu mystérieux, donc il a décidé de l'appeler le langage Python.

Dois-je aimer "Monty Python's Flying Circus" ?

Non, mais ça peut aider. :)

Python c'est le monde réel

Quel est le niveau de stabilité de Python ?

Très stable. Les versions stables sont sorties environ tous les 6 à 18 mois depuis 1991, et il semble probable que ça continue. À partir de la version 3.9, Python aura une nouvelle version majeure tous les 12 mois (PEP 602).

Les développeurs fournissent des versions correctives d'anciennes versions, ainsi la stabilité des versions existantes s'améliore. Les versions correctives, indiquées par le troisième chiffre du numéro de version (ex. 2.5.2, 2.6.2), sont gérées pour la stabilité, seules les corrections pour les problèmes connus sont inclus dans les versions correctives, et il est garanti que les interfaces resteront les mêmes tout au long de la série de versions correctives.

The latest stable releases can always be found on the Python download page. There are two production-ready versions of Python: 2.x and 3.x. The recommended version is 3.x, which is supported by most widely used libraries. Although 2.x is still widely used, it is not maintained anymore.

Combien de personnes utilisent Python ?

Il y a probablement des millions d'utilisateurs, bien qu'il soit difficile d'en déterminer le nombre exact.

Python est disponible en téléchargement gratuit, donc il n'y a pas de chiffres de ventes, il est disponible depuis de nombreux sites différents et il est inclus avec de beaucoup de distributions Linux, donc les statistiques de téléchargement ne donnent pas la totalité non plus.

Le forum comp.lang.python est très actif, mais tous les utilisateurs de Python ne laissent pas de messages dessus ou même ne le lisent pas.

Y a-t-il un nombre de projets significatif réalisés en Python ?

Voir https://www.python.org/about/success pour avoir une liste des projets qui utilisent Python. En consultant les comptes-rendus des conférences Python précédentes il s'avère que les contributions proviennent de nombreux organismes et entreprises divers.

High-profile Python projects include the Mailman mailing list manager and the Zope application server. Several Linux distributions, most notably Red Hat, have written part or all of their installer and system administration software in Python. Companies that use Python internally include Google, Yahoo, and Lucasfilm Ltd.

Quelles sont les nouveautés en développement attendues pour Python ?

See https://peps.python.org/ for the Python Enhancement Proposals (PEPs). PEPs are design documents describing a suggested new feature for Python, providing a concise technical specification and a rationale. Look for a PEP titled "Python X.Y Release Schedule", where X.Y is a version that hasn't been publicly released yet.

Le nouveau développement est discuté sur la liste de diffusion python-dev.

Est-il raisonnable de proposer des changements incompatibles dans Python ?

En général, non. Il y a déjà des millions de lignes de code de Python tout autour du monde, donc n'importe quel changement dans le langage qui rend invalide ne serait-ce qu'une très petite fraction du code de programmes existants doit être désapprouvé. Même si vous pouvez fournir un programme de conversion, il y a toujours des problèmes de mise à jour dans toutes les documentations, beaucoup de livres ont été écrits au sujet de Python, et nous ne voulons pas les rendre invalides soudainement.

En fournissant un rythme de mise à jour progressif qui est obligatoire si une fonctionnalité doit être changée.

Existe-t-il un meilleur langage de programmation pour les programmeurs débutants ?

Oui.

Il reste commun pour les étudiants de commencer avec un langage procédural et à typage statique comme le Pascal, le C, ou un sous-ensemble du C++ ou Java. Les étudiants pourraient être mieux servis en apprenant Python comme premier langage. Python a une syntaxe très simple et cohérente ainsi qu'une vaste libraire standard, plus important encore, utiliser Python dans les cours d'initiation à la programmation permet aux étudiants de se concentrer sur les compétences de programmation les cruciales comme les problèmes de découpage et d'architecture. Avec Python, les étudiants peuvent rapidement aborder des concepts fondamentaux comme les boucles et les procédures. Ils peuvent même probablement travailler avec des objets définis dans leurs premiers cours.

Pour un étudiant qui n'a jamais programmé avant, utiliser un langage à typage statique peut sembler contre-nature. Cela représente une complexité additionnelle que l'étudiant doit maîtriser ce qui ralentit le cours. Les étudiants essaient d'apprendre à penser comme un ordinateur, décomposer les problèmes, établir une architecture propre, et résumer les données. Apprendre à utiliser un langage typé statiquement est important sur le long terme, ce n'est pas nécessairement la meilleure idée pour s'adresser aux étudiants durant leur tout premier cours.

De nombreux autres aspects de Python en font un bon premier langage. Comme Java, Python a une large bibliothèque standard donc les étudiants peuvent être assigner à la programmation de projets très tôt dans leur apprentissage qui fait quelque chose. Les missions ne sont pas restreintes aux quatre fonction standards. En utilisant la bibliothèque standard, les étudiants peuvent ressentir de la satisfaction en travaillant sur des applications réalistes alors qu'ils apprennent les fondamentaux de la programmation. Utiliser la bibliothèque standard apprend aussi aux étudiants la réutilisation de code. Les modules tiers tels que PyGame sont aussi très utiles pour étendre les compétences des étudiants.

L'interpréteur interactif de Python permet aux étudiants de tester les fonctionnalités du langage pendant qu'ils programment. Ils peuvent garder une fenêtre avec l'interpréteur en fonctionnement pendant qu'ils rentrent la source de leur programme dans une autre fenêtre. S'ils ne peuvent pas se souvenir des méthodes pour une liste, ils peuvent faire quelque chose comme ça :

>>> L = []
>>> dir(L) 
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
'__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
'__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
'reverse', 'sort']
>>> [d for d in dir(L) if '__' not in d]
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

>>> help(L.append)
Help on built-in function append:

append(...)
    L.append(object) -> None -- append object to end

>>> L.append(1)
>>> L
[1]

Avec l'interpréteur, la documentation n'est jamais loin des étudiants quand ils travaillent.

There are also good IDEs for Python. IDLE is a cross-platform IDE for Python that is written in Python using Tkinter. Emacs users will be happy to know that there is a very good Python mode for Emacs. All of these programming environments provide syntax highlighting, auto-indenting, and access to the interactive interpreter while coding. Consult the Python wiki for a full list of Python editing environments.

Si vous voulez discuter de l'usage de Python dans l'éducation, vous devriez intéressé pour rejoindre la liste de diffusion pour l'enseignement.