'>

langage de programmation Python

 Python est un usage général, langage de programmation de haut niveau largement utilisée. [11] [12] [13] Sa philosophie de conception met l'accent sur la lisibilité du code, et sa syntaxe permet aux programmeurs d'exprimer des concepts en moins de lignes de code que cela ne serait possible dans les langues comme C. [14] [15] Le langage fournit des constructions destinées à permettre aux programmes clairs à la fois petite et grande échelle. [16]

Python supporte plusieurs paradigmes de programmation, y compris orientée objet, impératif et styles de programmation fonctionnelle. Il dispose d'un système de type dynamique et la gestion automatique de la mémoire et dispose d'un vaste et complète la bibliothèque standard. [17]

Comme d'autres langages dynamiques, Python est souvent utilisé comme un langage de script, mais est également utilisé dans un large éventail de contextes non-script. En utilisant des outils tiers, code Python peut être emballé dans des programmes exécutables autonomes. Interprètes Python sont disponibles pour de nombreux systèmes d'exploitation.

CPython, l'implémentation de référence de Python, est libre et logiciel open source et dispose d'un modèle de développement basé sur la communauté, de même que la quasi-totalité de ses implémentations alternatives. CPython est géré par l'asbl Python Software Foundation.

Histoire
Guido van Rossum, le créateur de Python
Article détaillé: Histoire de Python

Python a été conçu à la fin des années 1980 [18] et sa mise en œuvre a commencé en Décembre 1989 [19] par Guido van Rossum à CWI aux Pays-Bas en tant que successeur de la langue ABC (lui-même inspiré par SETL) [20] capable de la gestion des exceptions et l'interfaçage avec le système d'exploitation Amoeba. [1] Van Rossum est le principal auteur de Python, et son rôle central continue à décider de la direction de Python est reflété dans le titre donné à lui par la communauté Python, dictateur bienveillant à vie (BDFL).

Python 2.0 a été publié le 16 Octobre 2000, avec de nombreuses nouvelles fonctionnalités majeures dont un garbage collector complète et un soutien pour l'Unicode. Avec cette version, le processus de développement a été changé et est devenu plus transparent et soutenu par la Communauté [21].

Python 3.0 (également appelé Python 3000 ou Py3K), une version majeure, en arrière-incompatible, a été libéré le 3 Décembre 2008 [22], après une longue période de test. Beaucoup de ses principales caractéristiques ont été reporté à la Python rétrocompatible 2.6 et 2.7. [23]
Caractéristiques et philosophie

Python est un langage de programmation multi-paradigme: la programmation orientée objet et la programmation structurée sont entièrement pris en charge, et il ya un certain nombre de fonctionnalités de langage qui soutiennent la programmation fonctionnelle et la programmation orientée aspect (y compris par métaprogrammation [24] et par des méthodes magiques). [25] Beaucoup d'autres paradigmes sont prises en charge en utilisant les extensions, y compris la conception par contrat [26] [27] et la programmation logique [28].

Python utilise typage dynamique et une combinaison de comptage de référence et un cycle de détection de ramasse-miettes pour la gestion de la mémoire. Une caractéristique importante de Python est la résolution de nom dynamique (liaison tardive), qui lie la méthode et les noms des variables pendant l'exécution du programme.

La conception de Python offre un soutien limité de la programmation fonctionnelle dans la tradition Lisp. La langue a map (), réduire () et filter () fonctions, les compréhensions de listes, les dictionnaires et les décors, ainsi que les expressions du générateur. La bibliothèque standard comporte deux modules (itertools et functools) qui mettent en œuvre des outils fonctionnels empruntés à Haskell et Standard ML [29].

La philosophie de base de la langue est résumée par le document «PEP 20 (The Zen of Python)», qui comprend des aphorismes tels que: [30]

    Belle est meilleur que laid.
    Explicite est meilleur qu'implicite.
    Simple est meilleur que complexe.
    Complexe est mieux que compliqué.
    compte de la lisibilité.

Plutôt que d'exiger de toutes les fonctionnalités souhaité être intégré dans le noyau de la langue, Python a été conçu pour être hautement extensible. Python peut également être intégré dans les applications existantes qui ont besoin d'une interface programmable. Cette conception d'un petit langage de base avec une grande bibliothèque standard et un interprète facilement extensible a été conçu par Van Rossum dès le début en raison de ses frustrations avec ABC (qui épousé la mentalité ci-contre). [18]

Tout en offrant des choix de méthode de codage, la philosophie Python rejette syntaxe exubérante, comme en Perl, en faveur d'une plus clairsemée, la grammaire moins encombré. Comme Alex Martelli a dit: "Pour décrire quelque chose d'aussi intelligent n'est pas considérée comme un compliment dans la culture Python.» [31] La philosophie de Python rejette le Perl "il ya plus d'une façon de faire» en matière de conception de langue en faveur de " il devrait y avoir un et de préférence seule façon évidente de le faire ". [30]

Les développeurs de Python s'efforcent d'éviter l'optimisation prématurée, et d'ailleurs, rejettent les correctifs à des parties non critiques de CPython qui offrirait une légère augmentation de la vitesse au détriment de la clarté. [32] Lorsque la vitesse est importante, les programmeurs Python utilisent PyPy, un juste compilateur en temps, ou de déplacer des fonctions à temps critique pour les modules d'extension écrites en "plus proche des métaux" langages tels que C Cython est également disponible qui se traduit par un script Python en C et rend API de niveau directe C appelle dans l'interpréteur Python.

Un objectif important de l'développeurs Python se moque Python à utiliser. Cela se reflète dans l'origine de ce nom, et dans une approche parfois ludique à des tutoriels et des matériaux de référence. [Citation nécessaire]

Un néologisme commun dans la communauté Python est pythonic, ce qui peut avoir un large éventail de significations liées au style de programme. Pour dire que le code est pythonic-à-dire qu'il utilise les expressions idiomatiques Python bien, qu'il soit naturel ou montre la maîtrise de la langue, qu'elle soit conforme à la philosophie minimaliste et l'accent mis sur la lisibilité de Python. En revanche, le code qui est difficile à comprendre ou se lit comme une transcription approximative d'un autre langage de programmation est appelé unpythonic.

Les utilisateurs et les admirateurs de Python plus particulièrement ceux qui sont considérés compétents et expérimentés, sont souvent désignés comme Pythonists, Pythoneux et Pythoneers. [33] [34]
La syntaxe et la sémantique
Article détaillé: syntaxe de Python et la sémantique

Python est destiné à être une langue très lisible. Il est conçu pour avoir une présentation visuelle épurée, souvent en utilisant des mots-clés anglais où d'autres langues utilisent la ponctuation. En outre Python a un petit nombre d'exceptions et de cas spéciaux syntaxiques que C ou Pascal. [35]
Indentation

Python utilise l'indentation par espaces, plutôt que des accolades ou des mots clés bouclés, pour délimiter les blocs; une caractéristique aussi appelé la règle du hors-jeu. Une augmentation de retrait intervient après certaines déclarations;.. Une diminution de retrait marque la fin du bloc courant [36] Bien que la plupart considèrent ce afin d'améliorer considérablement la lisibilité [37], d'autres l'ont critiquée [38]
Les déclarations et les flux de contrôle

Les déclarations de Python incluent (entre autres):

    L'instruction if, qui exécute conditionnellement un bloc de code, ainsi que d'autre et elif (contraction de else-if).
    L'instruction for, qui effectue une itération sur un objet itérable, capturant chaque élément d'une variable locale pour une utilisation par le bloc ci-joint.
    L'instruction while, qui exécute un bloc de code tant que sa condition est vraie.
    L'instruction try, qui autorise des exceptions soulevées dans son bloc de code ci-joint pour être capturés et manipulés par les clauses d'exception, il assure également que le code de nettoyage dans un bloc finally sera toujours exécuté indépendamment de la façon dont les sorties de bloc.
    La déclaration de classe, qui exécute un bloc de code et attache son espace de noms local pour une classe, pour une utilisation dans la programmation orientée objet.
    L'instruction def, qui définit une fonction ou d'une méthode.
    L'instruction with (à partir de Python 2.5), qui renferme un bloc de code dans un gestionnaire de contexte (par exemple, l'acquisition d'un verrou avant le bloc de code est exécuté et libérer le verrou après, ou l'ouverture d'un fichier puis en le refermant), permettant RAII -comme comportement.
    L'instruction pass, qui sert de NOP. Il est syntaxiquement nécessaire pour créer un bloc de code vide.
    La déclaration affirmer, utilisé pendant le débogage pour vérifier les conditions qui devraient s'appliquer.
    La déclaration rendement, qui renvoie une valeur d'une fonction de générateur. De Python 2.5, le rendement est également un opérateur. Ce formulaire est utilisé pour mettre en œuvre coroutines.
    La déclaration d'importation, qui est utilisé pour importer des modules dont les fonctions ou variables peuvent être utilisées dans le programme actuel.

Python ne supporte pas l'optimisation d'appels ni continuations de première classe, et, selon Guido van Rossum, il ne le sera jamais. [39] [40] Cependant, un meilleur support pour les fonctionnalités coroutine-like est prévu au point 2.5, en étendant les générateurs de Python [41]. Avant 2.5, les générateurs étaient itérateurs paresseux; information a été transmise unidirectionnelle sur le générateur. Comme de Python 2.5, il est possible de transmettre des informations de retour dans une fonction de générateur, et à partir de Python 3.3, l'information peut être transmise à travers de multiples niveaux de la pile. [42]
Expressions

Expressions Python sont semblables à des langues telles que C et Java:

    En Python 2, l'opérateur / sur les entiers ne division entière, il tronque le résultat d'un entier. Division à virgule flottante sur des nombres entiers peut être obtenue par conversion de l'un des nombres entiers à un flotteur (par exemple flotteur (x) / y). En Python 3, le résultat de / est toujours une valeur à virgule flottante. Ce comportement peut être activé dans Python 2.2 + à l'aide de la division d'importation de future__ de __. En tant Python 2.2 + et Python 3, / / ​​peut être utilisé pour faire la division entière.
    En Python, == compare par valeur, contrairement à Java, où il compare par référence. (Comparaisons de valeur Java utilisent la méthode equals ().) Python est l'opérateur peut être utilisé pour comparer l'identité de l'objet (comparaison par référence). Les comparaisons peuvent être enchaînés, par exemple a <= b <= c.
    Python utilise les mots et, ou, non pas pour ses opérateurs booléens plutôt que les && symboliques, | |,! utilisé dans Java et C.
    Python est un type d'expression appelle une liste compréhension. Python 2.4 longues listes en compréhension dans une expression plus générale appelés une expression du générateur. [43]
    Les fonctions anonymes sont implémentées en utilisant des expressions lambda, mais ceux-ci sont limités en ce que le corps ne peut être une simple expression.
    Les expressions conditionnelles en Python sont écrites comme si c x autre y [44] (différent pour des opérandes de l': opérateur commun à de nombreuses autres langues).
    Python fait une distinction entre les listes et les tuples. Les listes sont écrites comme [1, 2, 3], ne sont pas immuables, et ne peuvent être utilisées comme les touches de dictionnaires (dictionnaire clés doivent être immuable en Python). Tuples sont écrites comme (1, 2, 3), sont immuables et peuvent donc être utilisées comme les touches de dictionnaires, à condition que tous les éléments du tuple sont immuables. Les parenthèses autour du tuple sont facultatifs dans certains contextes. Les tuples peuvent apparaître sur le côté gauche d'un signe égal, d'où une déclaration comme x, y = y, x peut être utilisé pour échanger deux variables.
    Python a un "string format" opérateur%. Ces fonctions analogues à des chaînes de format printf en C, par exemple "Foo = bar% s =% d"% ("blah", 2) évalue à "foo = blah bar = 2". En Python 3, cela a été complétée par la méthode de la classe str format (), par exemple "Foo = {0} bar = {1}". Format ("blah", 2).
    Python dispose de différents types de littéraux de chaîne:
        Chaînes délimitées par des guillemets simples ou doubles guillemets. Contrairement aux shells Unix, Perl et langues Perl influencé, apostrophes et les guillemets doubles fonctionner de façon similaire. Ces deux types de chaîne utilisent la barre oblique inverse (\) comme caractère d'échappement et il n'ya pas d'interpolation de chaîne implicite comme "$ foo".
        Cordes Triple-cités, qui commencent et se terminent par une série de trois apostrophes ou entre guillemets. Ils peuvent s'étendre sur des lignes et des fonctions multiples comme ici les documents dans leur coquille, Perl et Ruby.
        Variétés de chaîne brute, désignés par le préfixe la chaîne littérale avec une r. Pas de séquences d'échappement sont interprétés; chaînes brutes sont donc utiles lorsque backslashes littérales sont fréquentes, telles que les expressions régulières et les chemins de type Windows. Comparer "@-guillemets" en C #.
    Python a des expressions d'index et tranche sur les listes, désignées par une [key], un [start: stop] ou [start: arrêt: pas]. Indices sont basés sur zéro, et les indices négatifs sont par rapport à la fin. Tranches de prendre des éléments de l'index de départ jusqu'à, mais excluant, l'indice d'arrêt. Le troisième paramètre de tranche, appelée étape ou foulée, permet aux éléments d'être ignorés et inversés. Trancher les indices peuvent être omises, par exemple un [:] retourne une copie de la liste entière. Chaque élément d'une tranche est une copie superficielle.

En Python, une distinction entre les expressions et déclarations est rigoureusement appliquée, à la différence de langues telles que le Common Lisp, Scheme, ou Ruby. Cela conduit à un chevauchement des fonctions. Par exemple:

    Liste des compréhensions vs boucles for
    Les expressions conditionnelles contre si les blocs
    Le eval () vs exec () des fonctions intégrées (en Python 2, exec est une déclaration); la première est pour les expressions, celle-ci est pour les états.

Les déclarations ne peuvent pas être une partie d'une expression et ainsi de liste et d'autres compréhensions ou les expressions lambda, tous étant des expressions, ne peuvent pas contenir des énoncés prospectifs. Un cas particulier de ce qui est une instruction d'affectation telle que a = 1 ne peut pas faire partie de l'expression conditionnelle d'une instruction conditionnelle. Cela a l'avantage d'éviter une erreur classique C de confondre un opérateur d'affectation = pour un opérateur d'égalité == dans des conditions: if (c = 1) {... } Est le code C valide, mais si c = 1: ... provoque une erreur de syntaxe en Python.
Méthodes

Méthodes sur des objets sont des fonctions attachées à la classe de l'objet, le instance.method de syntaxe (argument) est, pour les méthodes et fonctions, de sucre syntaxique pour class.method (par exemple, l'argument) normaux. Méthodes Python ont un paramètre explicite de soi pour accéder aux données de l'instance, contrairement à l'auto implicite dans d'autres langages de programmation orientés objet (par exemple, Java, C + + ou Ruby). [45]
Dactylographie

Python utilise le typage de canard et a objets typés, mais les noms des variables non typées. contraintes de type ne sont pas vérifiées au moment de la compilation, mais plutôt des opérations sur un objet peuvent échouer, ce qui signifie que l'objet en question n'est pas d'un type approprié. En dépit d'être à typage dynamique, Python est un langage fortement typé, les opérations qui ne sont pas bien définies (par exemple, en ajoutant un numéro à une chaîne) plutôt que de tenter silencieusement à leur donner un sens interdit.

Python permet aux programmeurs de définir leurs propres types à l'aide de classes, qui sont le plus souvent utilisés pour la programmation orientée objet. De nouvelles instances de classes sont construites en appelant la classe (par exemple, SpamClass () ou EggsClass ()), et les classes sont elles-mêmes des instances du type de métaclasse (lui-même une instance d'elle-même), ce qui permet métaprogrammation et de réflexion.

Avant la version 3.0, Python avait deux types de classes: [46]. Des classes à l'ancienne »à l'ancienne» et «nouveau style» ont été éliminés dans Python 3.0, ce qui rend toutes les classes d'un style nouveau. Dans les versions entre 2.2 et 3.0, les deux types de classes pourraient être utilisés. La syntaxe des deux styles est le même, la différence étant de savoir si l'objet de classe est héritée, directement ou indirectement (toutes classes nouveau style héritent de l'objet et sont des instances de types).
Résumé de Python types Type Description Exemple de syntaxe intégré de 3
str Une chaîne de caractères: une séquence immuable de points de code Unicode. «Wikipedia»
"Wikipedia"
"" "Spanning
multiple
lignes "" "
byteArray Une séquence d'octets mutable. bytearray (b'Some ASCII ')
bytearray (b "Certains ASCII")
bytearray ([119, 105, 107, 105])
octets de Une séquence immuable d'octets. b'Some ASCII '
b "Certains ASCII"
octets ([119, 105, 107, 105])
liste Mutable liste, peuvent contenir des types mixtes. [4.0, 'string', true]
tuple immuable, peut contenir des types mixtes. (4,0, 'string', true)
défini, frozenset ensembles non ordonnés, ne contient pas de doublons. A frozenset est immuable. Soit peut contenir des types mixtes tant qu'elles sont immuables. {4.0, 'string', true}
frozenset ([4.0, 'string', true])
dict Un tableau modifiable associatif de paires de clés et de valeurs. Peut contenir des types mixtes (clés et les valeurs). Les clés doivent être de type immutabe. {'Cle1': 1.0, 3: false}
int immuable entier de grandeur illimitée. [47] 42
flotter Un nombre à virgule flottante immuable (définie par le système de précision). 3.1415927
complexe d'un nombre complexe immuable avec des parties réelle et imaginaire. 3 +2,7 j
bool Une valeur de vérité immuable. Vrai
Faux
Mathématiques

Contrairement à certains langages de programmation, la division entière est définie à arrondir vers moins l'infini. Donc 7 / / 3 est 2, mais (-7) / / 3 est -3. Ceci est uniforme et cohérente: par exemple, cela signifie que l'équation (a + b) / / b == a / / b + 1 est toujours vrai, alors que dans des langages tels que C, (-6 +7) / 7 = = -6 / 7. Cela signifie aussi que l'équation b * (a / / b) + a% b == a est valable pour des valeurs positives et négatives d'un. Toutefois, le maintien de la validité de cette équation signifie que, si le résultat de a% b est, comme prévu, dans l'intervalle semi-ouvert [0, n), où b est un nombre entier positif, il doit se situer dans l'intervalle (b , 0] lorsque b est négatif [48].

Python fournit une fonction round pour les flotteurs d'arrondissement des nombres entiers. Versions avant le 3 usage ronde loin de zéro: round (0,5) est de 1,0, rond (-0,5) est de -1,0 [49] Python 3 utilise tour à même:. Ronde (1,5) est de 2,0, rond (2.5 ) est de 2,0. [50] Le type Decimal / classe dans le module décimal (depuis la version 2.4) fournit une représentation numérique exacte et plusieurs modes d'arrondi.

Python permet expressions booléennes avec de multiples relations d'égalité d'une manière qui soit compatible avec l'usage général en mathématiques. Par exemple, l'expression a <b <c teste si a est inférieur à b et b est inférieure à c. C-dérivées langues interprètent cette expression différente:. Dans C, l'expression serait d'abord évaluer a <b, résultant en 0 ou 1, et ce résultat serait ensuite comparées avec c [51] [la page nécessaire]
Bibliothèques

Python a une grande bibliothèque standard, souvent cité comme l'une des grandes forces de Python, [52] en fournissant des outils adaptés à de nombreuses tâches. Cela est délibéré et a été décrit comme un «batteries incluses» [17] Python philosophie. Pour les applications exposés à Internet, un grand nombre de formats et de protocoles (comme HTTP et MIME) standard sont pris en charge. Modules pour la création d'interfaces utilisateur graphiques, la connexion à des bases de données relationnelles, arithmétiques avec des décimales de précision arbitraire [53], la manipulation d'expressions régulières, et de faire les tests unitaires sont également inclus. Pour les tests de logiciels, la bibliothèque standard fournit les modules et unittest doctest.

Certaines parties de la bibliothèque standard sont couverts par les spécifications (par exemple, la mise en œuvre WSGI wsgiref suit PEP 333 [54]), mais la majorité des modules sont pas. Ils sont définis par leur code, documentation interne, et la suite de l'essai (le cas échéant). Cependant, parce que la plupart de la bibliothèque standard est multi-plateforme du code Python, il ya seulement quelques modules qui doivent être modifiés ou complètement réécrits par les implémentations alternatives.

La bibliothèque standard n'est pas indispensable pour exécuter Python ou Embed Python au sein d'une application. Blender 2.49 par exemple omet la plupart de la bibliothèque standard.

Le Python Package Index, qui est le dépositaire officiel des logiciels tiers pour Python, contient plus de 25.000 "paquets" couvrant un large éventail de fonctionnalités, y compris:

    Interface utilisateur graphique, cadre web, multimédia, bases de données, réseaux et communications
    cadres de test, outils de documentation, l'administration système
    informatique, traitement de texte, traitement de l'image scientifique

Les environnements de développement

La plupart des implémentations de Python (y compris CPython) peuvent fonctionner comme un interpréteur de ligne de commande, pour lequel l'utilisateur entre les états séquentiellement et reçoit les résultats immédiatement. En résumé, les actes Python court comme une coquille.

D'autres coquilles ajoutent des capacités au-delà de ceux dans l'interpréteur de base, y compris IDLE et IPython. Bien que généralement suivant le style visuel de la coquille Python, ils mettent en œuvre des fonctionnalités telles que l'auto-complétion, le maintien de l'état de session, et la coloration syntaxique.

En plus de la norme IDE Python bureau (environnements de développement intégrés), il ya aussi des IDE basée sur un navigateur, Sage, (destiné à l'élaboration de programmes Python liés aux mathématiques et sciences) et un IDE hébergé, pythonAnywhere.
Implémentations
Voir aussi: Liste des logiciels implémentations coeur de Python #

La mise en œuvre Python principal, nommé CPython, est écrit en C répondant à la norme C89. [55] Il compile les programmes Python en bytecode intermédiaire [56], qui est exécuté par la machine virtuelle. [57] CPython est distribué avec une grande bibliothèque standard écrite dans un mélange de C et python. Il est disponible en versions pour de nombreuses plates-formes, y compris les systèmes de type Unix les plus modernes et Microsoft Windows. CPython était prévu dès sa conception très près d'être multi-plateforme. [58]

PyPy est un moyen rapide, conforme [59] interprète de Python 2.7. Son compilateur juste-à-temps apporte une amélioration significative de la vitesse sur CPython. [60] Une version en profitant des processeurs multi-core en utilisant la mémoire transactionnelle logicielle est en cours [61].

Stackless Python est un fork importante de CPython qui implémente microthreads, il n'utilise pas la pile de la mémoire C, permettant ainsi aux programmes massivement parallèles. PyPy a également une version stackless. [62]

D'autres compilateurs juste-à-temps ont été développés dans le passé, mais qui sont maintenant pris en charge:

    Google a lancé un projet appelé hirondelle en 2009 avec les objectifs de l'augmentation de la vitesse de l'interpréteur Python par 5 fois en utilisant le LLVM et d'améliorer sa capacité de multithreading à l'échelle de milliers de cœurs. [63] Plus tard, le projet a perdu le soutien de Google et de son Les développeurs principaux. À compter du 1er Février 2012, le interprète modifié était environ 2 fois plus rapide que CPython. [Citation nécessaire]
    Psyco est spécialisée dans le compilateur juste à temps qui s'intègre avec CPython et transforme le bytecode en code machine à l'exécution. Le code produit est spécialisée pour certains types de données et est plus rapide que le code Python standard.

En 2005, Nokia a publié un interpréteur Python pour les 60 téléphones mobiles série appelée PyS60. Il comprend de nombreux modules des implémentations de CPython et quelques modules supplémentaires pour l'intégration avec le système d'exploitation Symbian. Ce projet a été tenu à jour pour fonctionner sur toutes les versions de la plate-forme S60 et il ya plusieurs modules tiers disponibles. Le Nokia N900 prend également en charge Python avec GTK widgets bibliothèques, avec la particularité que les programmes peuvent être à la fois écrites et exécutées sur le périphérique lui-même. [Citation nécessaire]

Il ya plusieurs compilateurs de langages objets de haut niveau, avec soit sans restriction Python, un sous-ensemble restreint de Python, ou un langage similaire à Python comme langage source:

    Jython compile en code binaire Java, qui peut ensuite être exécuté par chaque implémentation de la machine virtuelle Java. Cela permet également l'utilisation des fonctions de la bibliothèque de classe Java du programme Python.
    IronPython suit une approche similaire afin d'exécuter des programmes Python sur le Common Language Runtime. NET.
    La langue de RPython peut être compilé en C, Java bytecode ou Common Intermediate Language, et est utilisé pour construire l'interprète PyPy de Python;
    Pyjamas compile Python JavaScript;
    Cabanon peau compile Python à C + +;
    Cython et Pyrex compiler à C.

Développement

Le développement de Python est menée en grande partie par le processus de proposition d'amélioration Python (PEP). Le processus de PEP est le principal mécanisme de proposer de nouvelles fonctionnalités majeures, pour recueillir les commentaires de la communauté sur une question, et pour documenter les décisions de conception qui sont allés dans Python. [64] PEP circulation sont examinés et commentés par la communauté Python et par Van Rossum, dictateur bienveillant du projet Python for Life (chef / architecte de langue). [64]

Amélioration de la langue va de pair avec le développement de la mise en œuvre de référence CPython. La liste de diffusion python-dev est le principal forum de discussion sur le développement de la langue;.. Des questions spécifiques sont traitées dans le bug tracker de Roundup maintenu à python.org [65] Le développement se fait sur un référentiel de code source auto-hébergé course Mercurial [ citation nécessaire]

Des communiqués de CPython sont de trois types, qui se distingue par quelle partie du numéro de version est incrémenté:

    Les versions en arrière-incompatibles, où l'on s'attend à briser le code et doit être porté manuellement. La première partie du numéro de version est incrémenté. Ces rejets se produisent rarement, par exemple, la version 3.0 a été libéré 8 ans après 2.0.
    Majeures ou "caractéristique" de presse, qui sont largement compatibles, mais introduisent de nouvelles fonctionnalités. La seconde partie du numéro de version est incrémenté. Ces libérations devraient avoir lieu environ tous les 18 mois, et chaque version majeure est soutenu par des corrections de bogues depuis plusieurs années après sa sortie. [66]
    Communiqués bug, qui introduisent pas de nouvelles fonctionnalités mais de corriger les bugs. La troisième et dernière partie du numéro de version est incrémenté. Ces rejets sont effectuées à chaque fois un nombre suffisant de bugs ont été corrigés en amont depuis la dernière version, soit environ tous les 3 mois. Les failles de sécurité sont également corrigés dans les versions correction de bugs. [67]

Un certain nombre d'alpha, bêta et release-candidats sont également libérées sous forme d'aperçus et de tester avant la sortie finale. Bien qu'il y ait un calendrier approximatif pour chaque nouvelle version, ce qui est souvent repoussée si le code n'est pas prêt. L'équipe de développement de surveiller l'état du code en exécutant la grande suite de test unitaire pendant le développement et l'utilisation du système d'intégration continue BuildBot. [68]

La communauté des développeurs Python a également contribué plus de 25.000 modules logiciels pour le Python Package Index (appelé pypi), le dépositaire officiel de bibliothèques tierces pour python.

La grande conférence académique sur Python est nommé PyCon. Il existe des programmes de mentorat spéciaux comme les Pyladies.
Nommer

Le nom de Python est dérivé du Flying Circus de la série télévisée Monty Python, [69] et il est courant d'utiliser des Monty références Python dans le code d'exemple. [70] Par exemple, les variables metasyntactic souvent utilisés dans la littérature Python sont du spam et des œufs, au lieu de le foo traditionnel et un bar. [70] [71]

Le préfixe Py-est utilisé pour montrer que quelque chose est lié à Python. Des exemples de l'utilisation de ce préfixe dans les noms d'applications Python ou des bibliothèques comprennent Pygame, une liaison de SDL pour Python (couramment utilisé pour créer des jeux); PyS60, une implémentation pour le système d'exploitation Symbian S60; PyQt et PyGTK, qui se lient Qt et GTK, respectivement, de Python, et PyPy, une implémentation Python écrit en Python.
Utiliser
Article détaillé: Liste des logiciels Python

Depuis 2008, Python s'est toujours classée parmi les huit premiers langages de programmation les plus populaires tel que mesuré par l'indice de la Communauté de programmation TIOBE. [11] Il s'agit de la troisième langue la plus populaire, dont la syntaxe grammaticale n'est pas essentiellement basé sur C, par exemple, C + +, C #, Objective-C, Java. Python ne emprunter massivement, toutefois, de l'expression et la syntaxe de l'instruction de C, ce qui rend plus facile pour les programmeurs de transition entre les langues.

Une étude empirique a constaté que, pour un problème de programmation impliquant la manipulation de chaînes et de recherche dans un dictionnaire, les langages de script comme Python étaient plus productifs que les langues classiques, tels que C et Java. La consommation de mémoire est souvent "mieux que Java et pas pire que C ou C + +". [72] Les grandes organisations qui font usage de Python incluent Google, [73] Yahoo!, [74] CERN [75], la NASA, [76] , et certains plus petits comme ILM, [77] et ITA. [78]

Python est utilisé comme un langage de script pour les applications web, par exemple, via mod_wsgi pour le serveur web Apache. [79] Avec l'Interface Web Gateway Server, une API standard a été développé pour faciliter ces applications. des cadres d'application Web comme Django, Pylons, Pyramide, TurboGears, web2py, Tornado, Flask et les développeurs de soutien Zope dans la conception et la maintenance des applications complexes. Pyjamas et IronPython peut être utilisé pour développer le côté client des applications basées sur Ajax. SQLAlchemy peut être utilisé comme dispositif de mappage de données d'une base de données relationnelle. Twisted est un cadre de communication de programmes entre ordinateurs, et est utilisé par exemple par Dropbox.

Bibliothèques comme NumPy, SciPy et Matplotlib permettent Python puisse être utilisé efficacement dans le calcul scientifique. Sage est un logiciel mathématique avec un "notebook" programmable en python: sa bibliothèque couvre de nombreux aspects des mathématiques, dont l'algèbre, combinatoire, mathématiques numériques, théorie des nombres, et le calcul.

Python a été intégré avec succès dans un certain nombre de produits logiciels en tant que langage de script, y compris dans le logiciel de la méthode des éléments finis comme Abaqus, logiciels d'animation 3D comme Blender, Cinema 4D, Lightwave, Houdini, Maya, modo, MotionBuilder, Softimage, le visuel effets compositeur Nuke, et des programmes d'imagerie 2D comme GIMP, Inkscape, Scribus et Paint Shop Pro. [80] GNU Debugger utilise Python comme une jolie imprimante pour montrer structures complexes tels que C + + conteneurs. Esri est en train de promouvoir Python comme le meilleur choix pour l'écriture de scripts dans ArcGIS. [81] Il a même été utilisé dans plusieurs jeux vidéo [82], [83] et a été adopté en tant que premier des trois langues de programmation disponibles dans Google App Engine , les deux autres étant Java et Go [84].

Python a également été utilisé dans des tâches d'intelligence artificielle. [85] [86] [87] [88] Merci d'être un langage de script avec l'architecture du module, la simplicité de la syntaxe et de riches outils de traitement de texte, Python est souvent utilisé pour les tâches de traitement du langage naturel. [89]

Pour de nombreux systèmes d'exploitation, Python est un composant standard, il est livré avec la plupart des distributions Linux, AmigaOS 4, FreeBSD, NetBSD, OpenBSD et Mac OS X, et peut être utilisé à partir du terminal. Un certain nombre de distributions Linux utilisent des installateurs écrits en Python: Ubuntu utilise l'installeur Ubiquity, tandis que Red Hat Linux et Fedora utilisent le programme d'installation Anaconda. Gentoo Linux utilise Python dans son système de gestion des paquets, Portage. Pardus utilise pour l'administration et au démarrage du système. [90]

Python a également vu l'utilisation étendue dans l'industrie de la sécurité de l'information, y compris le développement d'exploit. [91]

La plupart des logiciels de sucre pour le projet One Laptop per Child XO, maintenant développé au Sugar Labs, est écrit en Python. [92]

Le projet d'ordinateur mono-carte Raspberry Pi a adopté Python comme son principal langage de programmation de l'utilisateur.

LibreOffice inclus Python et a l'intention de remplacer Java avec Python. Fournisseur Scripting Python est une caractéristique essentielle [93] depuis la version 4.0 du 7 Février 2013
Incidence

La conception et la philosophie de Python ont influencé plusieurs langages de programmation, y compris:

    Boo utilise l'indentation, une syntaxe semblable, et un modèle objet similaire. Cependant, Boo utilise un typage statique et est étroitement intégré avec le. NET Framework. [94]
    Cobra utilise l'indentation et une syntaxe similaire. "Remerciements" des listes de documents de Cobra Python premier parmi les langues qui l'ont influencé. [95] Cependant, Cobra prend directement en charge les tests de conception par contrat, l'unité et le typage statique en option. [96]
    ECMAScript emprunté itérateurs, les générateurs, et la liste des compréhensions de Python. [97]
    Go est décrit comme intégrant la "vitesse de développement de travailler dans un langage dynamique comme Python". [98]
    Groovy a été motivée par le désir d'apporter la philosophie de conception Python à Java. [99]
    OCaml a une syntaxe facultative, appelée TOP (The Thing espace), inspiré par Python et Haskell. [100]
    Le créateur de Ruby, Yukihiro Matsumoto, a déclaré: «Je voulais un langage de script qui est plus puissant que Perl, et orientée objet de plus de Python C'est pourquoi j'ai décidé de concevoir mon propre langue.». [101]

Les pratiques de développement de Python ont aussi été imité par d'autres langues. La pratique consistant à exiger un document décrivant la raison d'être et les enjeux, un changement de la langue (dans le cas de Python, un PEP) est également utilisé dans Tcl [102] et Erlang [103] en raison de l'influence de Python.

Python a obtenu un langage de programmation TIOBE of the Year à deux reprises (en 2007 et 2010), qui est donné à la langue avec la plus forte croissance en popularité au cours d'une année, tel que mesuré par l'indice TIOBE.
Published By Drupal french Study