Python (Langage) - Wikipédia
Python (Langage) - Wikipédia
Date de première
20 février 1991, 32 ans[1]
version
Paradigmes Objet, impératif et fonctionnel
Auteur Guido van Rossum
Développeurs Python Software Foundation
Dernière version 3.12.1 (7 décembre 2023)[2]
Version en
3.13.0a2 (21 novembre 2023)[3],[4]
développement
Typage Fort, dynamique, duck typing
Influencé par ABC, C, Eiffel, ICON, Modula-3, Java, Perl,
Smalltalk, Tcl
A influencé Ruby, Groovy, Boo, Julia
Implémentations CPython, Jython, IronPython, PyPy
Écrit en C pour CPython, Java pour Jython, C# pour
IronPython et en Python lui-même pour PyPy
Système
Multiplateforme
d'exploitation
Licence Licence libre :
Python Software Foundation License
Site web www.python.org (https://www.python.org/)
modifier (https://fr.wikipedia.org/w/index.php?title=Python_(langage)&action=edit§ion
=0)
Python (prononcé /pi.tɔ̃/) est un langage de programmation
interprété, multiparadigme et multiplateformes. Il favorise la
programmation impérative structurée, fonctionnelle et orientée
objet. Il est doté d'un typage dynamique fort, d'une gestion
automatique de la mémoire par ramasse-miettes et d'un système
de gestion d'exceptions ; il est ainsi similaire à Perl, Ruby, Scheme,
Smalltalk et Tcl.
Au CWI
Au CNRI
En 1995, Van Rossum continue son travail sur Python au CNRI (en) à
Reston, aux États-Unis, où il sort plusieurs versions du logiciel.
À BeOpen
Caractéristiques
Syntaxe
Types de base
Il est possible de dériver les classes des types de base pour créer
ses propres types. On peut également fabriquer ses propres types
d'objets itérables sans hériter des itérables de base en utilisant le
protocole d'itération du langage.
Programmation fonctionnelle
s = "abracadabra"
{c for c in s}
[ i + j if i != j else 0 a = []
for i in range(n) for i in range(n):
if i % 2 != 0 if i % 2 != 0:
for j in range(n) for j in range(n):
if j % 3 != 0 ] if j % 3 != 0:
a.append(i + j if i != j else 0)
lambda x: x + 2
def filtre_inferieur_a_5(une_liste):
def mon_filtre(x): # variable locale
mon_filtre
return x < 5
return filter(mon_filtre, une_liste)
def accum(pas):
total = 0
def ajoute(n):
nonlocal total
total += n * pas
return total
return ajoute
On peut ainsi créer plusieurs accumulateurs, faisant chacun
référence à son propre total. Il est possible d'accéder à
l'environnement d'une fonction locale à l'aide de l'attribut
__closure__ .
Programmation objet
getattr(objet, "nom_attribut")
setattr(objet, "nom_attribut",
nouvel_attribut)
class Etudiant(Personne):
def __init__(self, niveau, nom, prenom):
Personne.__init__(self, nom, prenom)
self.niveau = niveau
def presenter(self):
return self.niveau + " " +
Personne.presenter(self)
class Vector2D:
def __init__(self, x, y):
# On utilise un tuple pour stocker
les coordonnées
self.coords = (x, y)
def __repr__(self):
# L'affichage de l'objet dans
l'interpréteur
return "Vector2D(%s, %s)"
%self.coords
a = Vector2D(1, 2)
b = Vector2D(3, 4)
print(a + b) # Vector2D(4, 6)
Générateurs
fi = gen_fibonacci()
for i in range(20):
print(next(fi))
import itertools
list(itertools.islice(gen_fibonacci(), 10))
# renvoie [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
def queens(n):
a = list(range(n))
up = [True] * (2 * n - 1)
down = [True] * (2 * n - 1)
def sub(i):
for k in range(i, n):
j = a[k]
p = i + j
q = i - j + n - 1
if up[p] and down[q]:
if i == n - 1:
yield tuple(a)
else:
up[p] = down[q] = False
a[i], a[k] = a[k], a[i]
yield from sub(i + 1)
up[p] = down[q] = True
a[i], a[k] = a[k], a[i]
yield from sub(0)
sum(1 for a in queens(8)) # Nombre de
solutions, renvoie 92
Réflexivité
Annotations
Compilation
Modèle objet
Méthodes
Visibilité
Héritage
Bibliothèque standard
Conventions de style
Interfaces graphiques
La communauté Python
Et commerciaux :
Distributions de Python
Framework d'avertissement
Nested Scopes
2.3 29 juin 2003 11 mars 2008 Ajout des fonctions enumerate() et sum()
La fonction de tri sort() accepte les mots clés cmp, key et reverse
2.5 19 septembre 2006 26 mai 2011 Les imports de module peuvent être relatifs
2.7 3 juillet 2010 1er janvier 2020 Syntaxe pour les ensembles littéraux : {1, 2, 3} au lieu de set((1,
2, 3))
Les types int et long gagnent une méthode bit_length() : nombre de bits
nécessaires pour représenter la valeur absolue du nombre
Les chaînes sont en Unicode par défaut, 'bytes' remplace l'ancien type 'str'
Utilise des itérateurs plutôt que des listes là où c'est approprié (ex :
dict.keys() )
13 mai 2013 (mises à jour de Modification de la gestion des fichiers compilés .pyc
3.2 20 février 2011[78] sécurité jusqu'au
Ajout des certificats (protocole HTTPS)
20 février 2016)
Amélioration du module pickle
3.5 13 septembre 2015[83] 8 août 2017 (mises à jour de nouvel opérateur pour les matrices : a @ b[84]
sécurité jusqu'au
ajout de la syntaxe await et async pour la programmation asynchrone
13 septembre 2020)
Version Date de sortie Fin de support Nouveautés majeures[75]
création du module typing qui fournit une API pour le type hinting en ajoutant
des outils tels que Callable , Generic , TypeVar , etc. Voir la PEP
484 (https://peps.python.org/pep-0484/) [archive] pour les détails
Nouveaux modules.
Nouveaux modules :
mai 2022 (mises à jour de zoneinfo : support des fuseaux horaires IANA[96]
3.9 5 octobre 2020
sécurité jusqu'en octobre 2025) graphlib : outils de tri dans des graphes
Support des types standards pour l'annotation de type au lieu de ceux définit
dans le module typing, exemple : list au lieu de typing.List[97]
3.11 24 octobre 2022 octobre 2027 Cpython est en moyenne 25% plus rapide pour exécuter un programme[108]
Nouvelle API pour les outils tels que les debuggers ou les profilers,
permettant de directement surveiller les événements dans Cpython avec un
coût faible en performance[117]
Développement
Les PEP
Python 3
Philosophie
Planning et compatibilité
Notes et références
9. FAQ Python 1.2 Why was Python created in the first place? (htt
ps://www.python.org/doc/faq/general/#why-was-python-creat
ed-in-the-first-place) [archive].
33. Les objets bytes ont été introduits par le PEP 358 (https://
www.python.org/dev/peps/pep-0358/) [archive], voir aussi le
PEP 3137 (https://www.python.org/dev/peps/pep-313
7/) [archive].
34. Les compréhensions ont été introduites dans le PEP 202 (http
s://www.python.org/dev/peps/pep-0202/) [archive] en juillet
2000, et les compréhensions de dictionnaires et d'ensembles
dans le PEP 274 (https://www.python.org/dev/peps/pep-027
4/) [archive] en octobre 2001.
45. http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.ht
ml#abstract [archive].
50. Kim Barrett, Bob Cassels, Paul Haahr, David A. Moon, Keith
Playford et P. Tucker Withington, « A monotonic superclass
linearization for Dylan », ACM SIGPLAN Notices, vol. 31, no 10,
octobre 1996, p. 69-82
(DOI
10.1145/236337.236343 (https://dx.doi.org/10.1145/236337.23634
, lire en ligne (http://citeseerx.ist.psu.edu/viewdoc/summary?d
oi=10.1.1.19.3910) [archive]).
57. Python Creator Guido van Rossum now working at Google (htt
p://www.oreillynet.com/onlamp/blog/2005/12/python_creator
_guido_van_rossu.html) [archive], article sur ONLamp.com
91. https://docs.python.org/fr/3/library/asyncio-
task.html#awaitables [archive].
93. https://docs.python.org/fr/3/library/time.html#time.time_ns [
archive].
94. (en) Steven D'Aprano et Brandt Bucher, « PEP 584 (https://www.p
ython.org/dev/peps/pep-0584/) [archive] », sur python.org,
1er mars 2019 (consulté le 16 novembre 2020).
105. (en) Brandt Bucher, Guido van Rossum, « PEP 0634 (https://ww
w.python.org/dev/peps/pep-0634/) [archive] », sur python.org
Voir aussi
Bibliographie
Bibliothèques scientifiques :
Calcul : NumPy, SciPy, Pandas, PyIMSL Studio, Sympy,
SageMath
Système expert : pyCLIPS, pyswip, pyDatalog, pyKE
(« Python Knowledge Engine »)
Visualisation : pydot, Matplotlib, pyngl, MayaVi
Exploration de données : Orange
Simulation : simPy
Chimie : PyMOL, MMTK, Chimera, PyQuante
Biologie : Biopython
Utilitaire : eGenix, ctype, Askbot
Analyseur syntaxique : PyParsing, PLY (« Python Lex & Yacc »),
NLTK (« Natural Language Toolkit »), SpaCy
Générateur de documentation : Sphinx
Graphisme : PIL / « Pillow » Soya 3D, Vpython, pymedia,
NodeBox, Mahotas
Jeux : Pygame, Panda3D
Framework web : Django, Karrigell, webware, Grok (en) ,
TurboGears, Pylons (en) , Flask, Bottle
Serveur web, CMS : Plone, Zope, Google App Engine, CherryPy,
MoinMoin, django CMS
Cartographie : TileCache, FeatureServer, Cartoweb 4, Shapely,
GeoDjango, PCL
Protocoles :
pyTango
Sérialisation : SimpleJSON
TCP, UDP, SSL/TLS, multicast, Unix sockets, HTTP, NNTP,
IMAP, SSH, IRC, FTP : Twisted
Vecteur : GeoJSON, OWSLib, Quadtree, Rtree, Shapely,
WorldMill, ZCO
ORM : SQLObject, SQLAlchemy, Storm, Django ORM
Driver SGBD : PyGresQL, Psycopg, MySQL-python (https://pypi.p
ython.org/pypi/MySQL-python) [archive]
Apprentissage : Keras
Articles connexes
Portail de l’informatique
Portail des logiciels libres
Portail de la programmation informatique