Vérifié contenu

Python (langage de programmation)

Sujets connexes: Programmation informatique

Contexte des écoles Wikipédia

Cette sélection se fait pour les écoles par l'organisme de bienfaisance pour enfants en lire plus . parrainage SOS enfant est cool!

Python
Python officiel Logo
Paradigm (s) multi-paradigme: orienté objet, impératif, fonctionnel, réfléchissant
Paru dans 1991
Conçu par Guido van Rossum
Promoteur Python Software Foundation
Version stable 3.1.3 / Novembre 27 2010 (2010-11-27)
2.7.1 / Novembre 27 2010 (2010-11-27)
Preview 3.2 RC 1/16 Janvier 2011 (2011-01-16)
Typing discipline canard, dynamique, fort
Les grandes implémentations CPython, IronPython, Jython, Python pour S60, PyPy, Swallow vide
Dialectes Cython, RPython, Stackless Python
Influencé par ABC, Algol 68, C , C ++ , Haskell, Icône, Java , Lisp, Modula-3, Perl
Influencé Boo, Cobra, D, Falcon, Groovy, JavaScript Rubis
OS Multiplate-forme
Licence Python Software Foundation License
Habituel les extensions de fichier .py, .pyw, .pyc, .pyo, .pyd
  • www.python.org
  • Programmation Python au Wikibooks

Python est un interprété, à usage général langage de programmation de haut niveau dont la philosophie de conception souligne la lisibilité du code. Python vise à combiner «puissance remarquable avec une syntaxe très claire", et son bibliothèque standard est vaste et complète. Son utilisation de indentation pour le bloc séparateurs est unique parmi les langages de programmation courants.

Python supporte multiples paradigmes de programmation, principalement mais non exclusivement orienté objet, impérative et, dans une moindre mesure, styles de programmation fonctionnelle. Il dispose d'une cuisine entièrement système de type dynamique et automatique gestion de la mémoire, semblable à celui de Scheme, Ruby, Perl , et Tcl. Comme les autres les langages dynamiques, Python est souvent utilisé comme un langage de script, mais est également utilisé dans un large éventail de contextes non-script.

Le implémentation de référence de Python ( CPython) est logiciels et libre et open source a un modèle de développement communautaire, de même que la totalité ou la quasi-totalité de ses implémentations alternatives. CPython est géré par le but non lucratif Python Software Foundation.

interprètes Python sont disponibles pour de nombreux systèmes d'exploitation et les programmes Python peuvent être emballés dans des autonome code exécutable pour de nombreux systèmes utilisant divers outils.

Histoire

Python a été conçu dans les années 1980 et sa mise en œuvre a commencé en Décembre 1989 par Guido van Rossum au CWI dans le Pays-Bas en tant que successeur de la Langage de programmation ABC (lui-même inspiré par SETL) capable de le traitement des exceptions et l'interface avec le Système d'exploitation Amoeba. Van Rossum est l'auteur principal de Python, et son rôle central dans la décision de poursuivre la direction de Python est reflété dans le titre donné à lui par la communauté Python, Benevolent Dictator for Life (DBAV).

Python 2.0 a été publiée le 16 Octobre 2000, avec de nombreuses nouvelles fonctionnalités majeures, y compris une complète garbage collector et de soutien pour Unicode. Cependant, le changement le plus important a été le processus de développement lui-même, avec un décalage d'un processus plus transparent et soutenu par la communauté. Python 3.0, une version majeure, en arrière-incompatibles, a été libéré le 3 Décembre 2008, après une longue période de tests. Beaucoup de ses principales caractéristiques ont été rétroportée à l'Python rétro-compatible 2.6 et 2.7. Python a été le vainqueur de la Programmation TIOBE Prix Langue de 2010 pour avoir le plus grand gain de part de marché de langage de programmation au cours de cette année (+ 1,81%).

la philosophie de programmation

Python est un multi-paradigme de langage de programmation. Plutôt que de forcer les programmeurs à adopter un style particulier de la programmation, il permet plusieurs styles: la programmation orientée objet et programmation structurée sont entièrement pris en charge, et il ya un certain nombre de caractéristiques linguistiques qui soutiennent programmation fonctionnelle et orientée aspect de programmation (y compris par métaprogrammation et en méthodes magiques). Beaucoup d'autres paradigmes sont pris en charge en utilisant les extensions, comme pyDBC et les contrats de Python qui permettent Conception par contrat.

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

Plutôt que d'exiger toutes les fonctionnalités souhaité être intégré dans le noyau de la langue, Python a été conçu pour être hautement extensible. De nouveaux modules intégrés peuvent être facilement écrits en C , C ++ ou Cython. Python peut également être utilisé comme langage d'extension pour des modules et des 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 visait par Van Rossum dès le début en raison de ses frustrations avec ABC (qui a épousé la mentalité opposée).

La conception de Python offre qu'un support limité programmation fonctionnelle dans la Tradition Lisp. Cependant, la philosophie de conception de Python présente des similitudes importantes avec celles des langues Lisp famille minimalistes, comme Scheme. La bibliothèque standard dispose de deux modules (itertools et functools) qui mettent en œuvre des outils éprouvés fonctionnels empruntés Haskell et Standard ML.

Tout en offrant le choix de la méthodologie de codage, la philosophie Python rejette syntaxe exubérante, comme dans Perl , en faveur d'une grammaire clairsemée, moins encombré. Les développeurs de Python promouvoir expressément une «culture» particulière ou idéologie basée sur ce qu'ils veulent que la langue soit, en favorisant des formes linguistiques qu'ils considèrent comme "beau", "explicite" et "simple". Comme Alex Martelli mit dans sa Python Cookbook: ". Pour décrire quelque chose d'aussi intelligent est pas considéré comme un compliment dans la culture de Python" (2e éd, p 230..) La philosophie de Python rejette l'Perl " il ya plus d'une façon de le faire "approche de la conception de la langue en faveur de« il devrait y avoir une façon et de préférence un seul évidente de le faire ".

Les développeurs de Python évitent optimisation prématurée, et d'ailleurs, de rejeter les correctifs à des parties non critiques de CPython qui offriraient une augmentation marginale de la vitesse au détriment de la clarté. Python est parfois décrit comme "lent". Cependant, par le Principe de Pareto, la plupart des problèmes et des sections de programmes ne sont pas vitesse critique. Lorsque la vitesse est un problème, les programmeurs Python ont tendance à essayer d'utiliser un compilateur JIT tels que Psyco, réécriture des fonctions à temps critique dans "Closer au métal" langages tels que C, soit en traduisant (un dialecte) code Python au code C en utilisant des outils comme Cython.

La philosophie de base de la langue est résumée par le document "PEP 20 (Le Zen de Python)".

Nom et néologismes

Un objectif important des développeurs Python Python fait amusant à utiliser. Cela se traduit par l'origine du nom (basée sur la série télévisée Monty Python Flying Circus), dans la pratique courante d'utiliser des références Monty Python dans le code exemple, et dans une approche ludique de temps en temps à des tutoriels et des matériaux de référence. Par exemple, le les variables metasyntactic souvent utilisées dans la littérature sont Python spam et oeufs, au lieu de la traditionnelle foo et bar.

Une commune néologisme dans la communauté Python est pythonique, qui peut avoir un large éventail de significations liées au mode de programme. Pour dire que un morceau de code est pythonique est-à-dire qu'il utilise idiomes Python ainsi, qu'il est naturel ou montre maîtrise de la langue. De même, à dire d'une fonctionnalité de l'interface ou la langue qu'il est pythonique est-à-dire qu'il fonctionne bien avec les idiomes de Python, que son utilisation cadre bien avec le reste de la langue.

En revanche, une marque de Code unpythonic est qu'il tente d'écrire C ++ (ou Lisp, Perl ou Java) code Python qui est, fournit une transcription approximative plutôt que d'une traduction idiomatique de formes d'une autre langue. Le concept de pythonicity est étroitement lié à la philosophie minimaliste de Python de la lisibilité et en évitant le "il ya plus d'une façon de le faire" approche. Code illisible ou idiomes sont incompréhensibles unpythonic.

Les utilisateurs et les admirateurs de Python-surtout ceux qui sont considérés compétent ou expérimenté sont souvent appelés Pythonists, Pythoneux et Pythoneers.

Le préfixe Py peut être utilisé pour montrer que quelque chose est liée à Python. Des exemples de l'utilisation de ce préfixe dans les noms d'applications Python ou des bibliothèques comprennent Pygame, un liaison de SDL à Python (couramment utilisé pour créer des jeux); PyS60, une mise en œuvre pour le Symbian Series 60 Système Opérateur; PyQt et PyGTK, qui lient Qt et GTK, respectivement, pour Python; et PyPy, une implémentation Python écrit en Python. Le préfixe est également utilisé en dehors de nommer des logiciels: le principal Python conférence est nommé PyCon.

Usage

Python est souvent utilisé comme un langage de script pour applications web, par exemple via mod_wsgi pour la Le serveur web Apache. Avec Web Server Gateway Interface, une API standard a été développé pour faciliter ces applications. cadres d'application Web comme Django, Pylônes, TurboGears, web2py, Ballon et Zope développeurs de soutien dans la conception et la maintenance des applications complexes. Bibliothèques comme NumPy, SciPy et Matplotlib permettre Python pour être utilisé efficacement dans le calcul scientifique.

Python a été intégré avec succès dans un certain nombre de produits logiciels comme un langage de script, y compris dans Méthode des éléments finis des logiciels tels que Logiciels d'animation Abaqus, 3D tels que Maya, MotionBuilder, Softimage, Cinema 4D, BodyPaint 3D, modo et Programmes d'imagerie Blender et 2D comme GIMP, Inkscape, Scribus et Paint Shop Pro. GNU GDB utilise Python comme une jolie imprimante pour montrer structures complexes telles que les conteneurs C de. ESRI est en train de promouvoir Python comme le meilleur choix pour l'écriture de scripts ArcGIS. Il a même été utilisé dans plusieurs jeux vidéo et a été adopté comme l'un des deux disponibles langages de script dans Google Docs.

Pour de nombreux systèmes d'exploitation, Python est un composant standard; il est livré avec plus Distributions Linux, NetBSD, OpenBSD et Mac OS X et peut être utilisé à partir du terminal. Un certain nombre de distributions Linux utilisation installateurs écrits en Python: Ubuntu utilise le Ubiquity installateur, tandis que Red Hat Linux et Fedora utilisent Installateur Anaconda. Gentoo Linux utilise Python dans son système de gestion des paquets, Portage et l'outil standard pour y accéder, émerger. Pardus utilise pour l'administration et au démarrage du système.

Python a également été abondamment utilisé dans le informations industrie de la sécurité, y compris le développement d'exploits.

Parmi les utilisateurs de Python sont YouTube et l'original Client BitTorrent. Les grandes organisations qui font usage de Python incluent Google , Yahoo! , CERN, la NASA et ITA. La plupart logiciel de sucre pour la One Laptop per Child XO, développé au Sugar Labs, est écrit en Python.

Syntaxe et la sémantique

Syntaxe en surbrillance Python 2.x code.

Python a été destiné à être une langue très lisible. Il est conçu pour avoir une présentation visuelle épurée, souvent à l'aide des mots-clés en anglais où d'autres langues utilisent la ponctuation. Python nécessite moins passe-partout que les traditionnels langages structurés manifestement typés comme le C ou Pascal, et a un plus petit nombre d'exceptions et de cas spéciaux syntaxiques que l'un de ces. Pour une description détaillée des différences entre les versions 2.x et 3.x, voir Histoire de Python.

Échancrure

utilisations Python indentation par espaces, plutôt que accolades ou des mots-clés pour délimiter bouclés, blocs (une caractéristique également connue sous le nom règle du hors-jeu). Une augmentation de retrait vient après certaines déclarations; une diminution de l'échancrure correspond à la fin du bloc courant.

Les déclarations et flux de contrôle

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

  • Le if la déclaration, qui exécute conditionnellement un bloc de code, avec else et elif (une contraction de else-if).
  • Le for déclaration, qui parcourt sur un objet itérable, capturant chaque élément à une variable locale pour l'utilisation par le bloc ci-joint.
  • Le while déclaration, qui exécute un bloc de code tant que sa condition est vraie.
  • Le try déclaration, qui permet aux exceptions soulevées dans son bloc de code attaché à être attrapés et manipulés par except clauses; il garantit également que code de nettoyage dans un finally bloc sera toujours être exécuté indépendamment de la façon dont les sorties de bloc.
  • Le class déclaration, qui exécute un bloc de code et attache son espace de noms local à un classe, pour utilisation dans La programmation orientée objet.
  • Le def déclaration, qui définit une fonction ou Procédé.
  • L' with déclaration (à partir de Python 2.6), qui renferme un bloc de code dans un gestionnaire de contexte (par exemple, l'acquisition d'une avant de verrouiller le bloc de code est exécuté, et de libérer le verrou après).
  • La pass déclaration, qui sert de NOP et peut être utilisé à la place d'un bloc de code.
  • Le assert déclaration, utilisé pendant le débogage pour vérifier les conditions qui devraient se appliquer.
  • Le yield déclaration, qui renvoie une valeur à partir d'un fonction de générateur. (De Python 2.5, yield est également un opérateur. Ce formulaire est utilisé pour mettre en œuvre coroutines - voir ci-dessous).

Chaque énoncé a sa propre sémantique: par exemple, le def déclaration ne exécute pas son bloc immédiatement, contrairement à la plupart des autres états.

CPython ne supporte pas de première classe continuations, et selon Guido van Rossum, il ne le sera jamais. Cependant, un meilleur support pour coroutine fonctionnalité semblable est prévue dans 2,5, en étendant Python générateurs. Avant de 2,5, générateurs étaient paresseux itérateurs; informations ont été transmises de manière unidirectionnelle sur la génératrice. En Python 2.5, il est possible de transmettre des informations de nouveau dans une fonction de générateur.

Expressions

expressions Python sont semblables à des langues telles que C et Java . Quelques remarques importantes:

  • En Python 2, l'opérateur / sur les nombres entiers ne division entière, ce est à dire qu'il tronque le résultat à un nombre entier. En Python 3, cependant, le résultat de / est toujours une valeur à virgule flottante, et un nouvel opérateur // est introduit à faire la division entière. En Python 2, ce comportement peut être activé à l'aide de la déclaration de __future__ division d'importation ou de type fonte flotteur (x) / flotteur (y)
  • En Python, == compare par valeur, contrairement à Java, où il compare par référence (comparaison de la valeur en Java utilisent la méthode equals). Pour comparer par référence en Python, utiliser l'opérateur is.
  • Python utilise les mots and , or , not pour ses opérateurs booléens plutôt que symbolique && , || , ! .
  • Python a un type important d'expression connu comme un compréhension de liste. Les versions récentes de Python ont étendu list comprehensions dans une expression plus générale connu comme un expression du générateur.
  • Les fonctions anonymes sont mises en œuvre à l'aide expressions lambda; Toutefois, 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 x y z autre (différent afin d'opérandes de la ?: Opérateur commun à beaucoup d'autres langues).
  • Python fait une distinction entre listes et tuples. Les listes sont écrites comme [1, 2, 3], sont modifiables, et ne peuvent être utilisées comme les touches de dictionnaires (les clés de dictionnaire doivent être immuable en Python). Les tuples sont écrits comme (1, 2, 3), sont immuables et peuvent donc être utilisés que les touches de dictionnaires. Les parenthèses autour du tuple sont facultatives dans certains contextes. Tuples peuvent apparaître sur le côté gauche d'un signe égal; donc une expression comme x, y = y, x peut être utilisé pour échanger deux variables.
  • Python 2 a un "format de chaîne" opérateur%. Ces fonctions analogues à expressions printf en C , par exemple "bar =% d du foo ="%% ("blah", 2) évalue à "foo = bar blah = 2". En Python 3 cela a été remplacée par la méthode de format dans la classe de chaîne, par exemple "foo = {0} bar = {1}". Format ("blah", 2).
  • Python a différents types de cordes.
    • Soit guillemets simples ou doubles peuvent être utilisés pour citer cordes. Contrairement à des langages de script Unix, Perl ou langages tels que Perl influencé Ruby ou Groovy, apostrophes et guillemets fonctionnent à l'identique, ce qui revient à aucune chaîne interpolation des expressions $ foo.
    • Il ya aussi des chaînes multi-lignes, qui commencent et se terminent par une série de trois guillemets simples ou doubles et fonctionnent comme ici documents dans les langues de coques, Perl et Ruby.
    • Enfin, tous les types de chaînes mentionnées précédemment viennent en " variétés premières "(notées en plaçant un r littérale avant le guillemet d'ouverture), qui ne pas faire de barre oblique inverse interpolation et donc sont très utiles pour expressions régulières ou de Windows chemins -style; comparer "@ -quoting" dans C #.
  • Python a expressions de tranche sur les listes, désignées par ... [gauche: à droite] ou ... [gauche: droite: foulée]. Par exemple, si les variables nums est attribué la liste [1, 3, 5, 7, 8, 13, 20], alors les expressions suivantes évalueront Vrai:
    • nums [2: 5] == [5, 7, 8], ce est à dire la tranche va jusqu'à, mais sans inclure, l'index droit.
    • nums [1:] == [3, 5, 7, 8, 13, 20], ce est à dire tous les éléments, mais la première, parce qu'un index droit omis signifie "la fin".
    • nums [: - 3] == [1, 3, 5, 7], à savoir un indice laissé omis signifie "le début", et un indice négatif (gauche ou droite) compte de la fin.
    • nums [:] fait une copie de la liste. Cela signifie nums == nums [:] est vrai, mais nums est nums [:] est faux. Les modifications apportées à la copie ne affectera pas l'original.
    • nums [1: 5: 2] == [3, 7], ce est à dire si trois chiffres sont donnés, la troisième est appelée la "foulée", indiquant dans ce cas que chaque deuxième élément sera sélectionné.

En Python, une distinction entre les expressions et déclarations est rigidement appliquée, à la différence de langues telles que le Common Lisp, Scheme ou Ruby. Cela entraîne une duplication de fonctionnalités, par exemple

  • list comprehensions vs "pour" boucles
  • expressions conditionnelles contre "si" blocs
  • Le eval () vs exec () builtins (en Python 2, exec est un déclarateur de déclaration); eval () est pour les expressions, exec () est pour les états.

États ne peuvent pas faire partie d'une expression et ainsi de liste et les autres compréhensions ou expressions lambda, toutes les expressions étant, ne peuvent pas contenir des énoncés. Un cas particulier, ce est que une instruction d'affectation comme «a = 1 'ne peut pas faire partie de l'expression conditionnelle d'une instruction conditionnelle; ce qui a l'avantage d'éviter une erreur classique C de confondre une mission jeton '=', pour un opérateur d'égalité '==' qui resterait valable si C (c = 1) {...} mais si c = 1: ... est le code Python valide.

Méthodes

Méthodes sur des objets sont fonctions attachés à la classe de l'objet; la syntaxe instance.method(argument) est, pour les méthodes et les fonctions normales, sucre syntaxique pour Class.method(instance, argument) . méthodes de Python ont explicite self paramètre d'accès données d'instance, contrairement à l'auto implicite dans d'autres langages de programmation orientée objet (par exemple, Java , C ++ ou Ruby).

Dactylographie

utilisations Python typage canard et a tapé objets mais les noms de variables non typées. Type de contraintes ne sont pas vérifiées au la compilation; plutôt, les opérations sur un objet peuvent échouer, ce qui signifie que l'objet donné ne est pas d'un type approprié. Bien qu'il soit typé dynamiquement, Python est fortement typé, opérations qui ne sont pas bien définis interdisant (par exemple, en ajoutant un numéro à une chaîne) plutôt que de tenter silencieusement leur donner un sens.

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

Avant la version 3.0, Python avait deux types de classes: «à l'ancienne» et «nouveau style». Les classes de style ancien ont été éliminées en Python 3.0, rendant toutes les classes de nouveau style. Dans les versions entre 2,2 et 3,0, les deux types de classes peuvent être utilisés. La syntaxe des deux styles est le même, la différence étant de savoir si la classe object est hérité de, directement ou indirectement (toutes les classes du nouveau modèle hérite de object et qui sont des instances de type ).

Voici un résumé des types intégrés de Python:

Type Description Exemple de syntaxe
str Une séquence immuable de caractères. En Python 2, les chaînes sont une séquence de caractères. Chaînes Unicode doivent être déclarées en faisant précéder par la lettre u. En Python 3 chaînes sont Unicode par défaut. 'Wikipédia'
"Wikipédia"
"" "Spanning
plusieurs
lignes "" "
octets Une séquence immuable d'octets b'Some ASCII '
b "Certains ASCII"
liste Mutable, peuvent contenir des types mixtes [4.0, 'string', True]
tuple Immuable, peut contenir des types mixtes (4.0, 'string', True)
set , frozenset Non ordonnée, ne contient pas de doublons. Un frozenset est immuable. {4.0, 'string', true}
frozenset ([4.0, 'string', True])
dict Un groupe mutable de paires clé-valeur {'Key1': 1.0, 3: Faux}
int Un immuable Numéro de précision fixe de grandeur illimitée 42
flotteur Un immuable nombre à virgule flottante (précision définie par le système) 3.1415927
complexe Un immuable nombre complexe avec le nombre réel et parties imaginaires 3 + 2.7j
bool Une valeur de vérité immuable Vrai
Faux

Mathématiques

Python définit l'opérateur modulo de sorte que le résultat de a % b est dans l'intervalle ouvert [0,b) , où b est un entier positif. (Lorsque b est négatif, le résultat se situe dans l'intervalle (b, 0]). Ce est la manière habituelle de la définition de l'opération modulo en mathématiques. Toutefois, cela affecte par conséquent comment division entier est défini. Pour maintenir la validité de l'équation b * (a // b) + a % b = a , division entière est définie pour arrondir vers moins l'infini. Par conséquent 7 // 3 est 2, mais (−7) // 3 est -3. Ce est différent de beaucoup langages de programmation, où le résultat de la division entière arrondit vers zéro et l'opérateur modulo est donc définie de manière qui peut renvoyer des nombres négatifs.

Python fournit un round fonction pour arrondi flotte en entiers. Version 2.6.1 et l'utilisation inférieure ronde loin de zéro: round(0.5) est de 1,0, round(-0.5) est -1,0. Version 3.0 et l'utilisation plus élevée arrondi au même: round(1.5) est de 2,0, round(2.5) est de 2,0. La Decimal de type / classe dans le module decimal (depuis la version 2.4) offre 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 est conforme à l'usage général en mathématiques. Par exemple, l'expression a < b < c teste si a est inférieure à b et b est inférieure à c . langues C dérivé interprètent cette expression différente: en C, l'expression serait d'abord évaluer a < b , résultant en 0 ou 1, et ce résultat seraient alors comparées avec c .

Implémentations

CPython

La mise en œuvre intégrer Python, connu sous le nom CPython, est écrit en C réunion, le Norme C89. CPython compile les programmes Python dans intermédiaire bytecode, qui sont ensuite exécutée par la machine virtuelle. Elle est distribuée avec une grande bibliothèque standard écrit dans un mélange de C et python. CPython navires dans les versions pour de nombreuses plates-formes, y compris Microsoft Windows et le plus moderne Systèmes de type Unix. CPython visait à partir de presque sa conception même d'être multi-plateforme; son utilisation et le développement sur les plateformes ésotériques tels que Amoeba, les côtés plus classiques comme Unix et Mac OS, a grandement contribué à ce sujet.

Stackless Python est une fourchette importante de CPython qui implémente microfiletages; il ne utilise pas la pile de mémoire C. On peut se attendre à courir sur environ les mêmes plates-formes qui se exécute sur CPython.

Google a lancé un projet appelé Swallow à vide en 2009 avec les objectifs de l'augmentation de la vitesse de l'interpréteur Python par 5 fois et l'amélioration de sa capacité de multithreading à l'échelle de milliers de cœurs.

Implémentations alternatives

Jython compile le programme Python en byte code Java, qui peut ensuite être exécuté par tous les Java mise en œuvre de la machine virtuelle. 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 .NET Common Language Runtime. PyPy est un expérimentale mise en œuvre d'auto-hébergement de Python, écrit en Python, qui peuvent sortir plusieurs types de bytecode, code objet et langages intermédiaires. Il existe également des compilateurs à haut niveau opposer langues, soit avec Python sans restriction, un sous-ensemble restreint de Python, ou une langue similaire à Python comme la langue source. PyPy est de ce type, la compilation RPython en plusieurs langues; d'autres exemples comprennent Pyjamas compilation à JavaScript; Cabanon peau compilation en C ++ ; et Cython et Pyrex compilation en C .

En 2005 Nokia a publié un interpréteur Python pour le Série 60 téléphones mobiles appelés PyS60. Il comprend de nombreux modules des implémentations CPython et quelques modules supplémentaires pour l'intégration avec le Le système d'exploitation Symbian. Ce projet a été tenu à jour pour fonctionner sur toutes les variantes de la plate-forme S60 et il ya plusieurs modules tiers disponibles. Le Nokia N900 prend également en charge Python avec gtk des bibliothèques de Windows, avec la caractéristique que les programmes peuvent être à la fois écrites et exécuter sur le dispositif lui-même. Il ya aussi un interpréteur Python pour Les appareils Windows CE (y compris Pocket PC). Il est appelé PythonCE. Il existe des outils supplémentaires disponibles pour une application facile et le développement de l'interface graphique.

La machine virtuelle PyMite a commencé en 2000 et a fait sa première apparition publique au PyCon 2003. PyMite a été plié en Python-on-a-Chip en 2009. Python-on-a-Chip (p14p) est un projet pour développer une machine virtuelle Python réduite (nom de code PyMite) qui exécute un sous-ensemble important de la langue de Python sur microcontrôleurs sans système d'exploitation en tant que peu que 4 Ko de RAM.

Autour de 2004, le Pyastra projet a créé un traducteur spécialisé et l'assembleur qui cible très ressources limitées microcontrôleurs.

ChinesePython (中蟒) est un langage de programmation Python en chinois lexique de la langue. Outre mots réservés et les noms de variables, la plupart des opérations de type de données peuvent être codées en chinois ainsi.

La sémantique d'interprétation

La plupart des implémentations de Python (y compris CPython ) peut fonctionner comme un ligne de commande interprète, pour lequel l'utilisateur entre états séquentiellement et reçoit les résultats immédiatement. En bref, Python agit comme un coquille. Bien que la sémantique des autres modes d'exécution (bytecode compilation, ou la compilation en code natif) préserver la sémantique séquentielle, ils offrent un gain de vitesse au détriment de l'interactivité, de sorte qu'ils ne sont généralement utilisés en dehors d'une interaction en ligne de commande (par exemple, , lors de l'importation d'un module).

Autres coquilles ajoutent des capacités au-delà de celles de l'interprète de base, y compris IDLE et IPython. Bien que généralement suivant le style visuel de la coque de Python, ils mettent en œuvre des fonctionnalités telles que l'auto-complétion, la rétention de l'état de session, et la coloration syntaxique.

Certaines implémentations peuvent compiler non seulement en bytecode, mais peuvent se transformer en code Python code machine. Jusqu'à présent, cela n'a été fait pour des sous-ensembles restreints de Python. PyPy prend cette approche, en nommant sa version compilable restreint de Python RPython.

Est un Psyco spécialisation juste au compilateur de temps qui se intègre avec CPython et transforme le bytecode en code machine à l'exécution. Le code produit est spécialisée pour certains types et de données est plus rapide que le code standard de Python. Psyco est compatible avec tout le code Python, non seulement un sous-ensemble.

Développement

le développement de Python est menée en grande partie par le processus Python Enhancement Proposition (PEP). PEP sont des documents de conception normalisés fournissant des informations générales relatives à Python, y compris des propositions, des descriptions, justifications de conception, et des explications pour les fonctions linguistiques. PEP cours sont analysés et commentés par Van Rossum, le projet Python Benevolent Dictator for Life (chef de file / langue de l'architecte). Les développeurs de CPython communiquent également sur une liste de diffusion, python-dev, qui est le principal forum de discussion sur le développement de la langue; questions spécifiques sont discutés dans le Roundup Bug Tracker maintenue à python.org. Développement a lieu à l'auto-hébergé svn.python.org.

Communiqués publics de CPython sont de trois types, qui se distinguent par quelle partie du numéro de version est incrémenté:

  • versions arrière-incompatibles, où on se attend à briser le code et doit être manuellement porté. 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é après huit années 2.0.
  • versions majeures ou «particularité», qui sont largement compatibles, mais introduire 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.
  • communiqués de correction de bugs, qui introduisent pas de nouvelles fonctionnalités mais corrige des bugs. La troisième et dernière partie du numéro de version est incrémenté. Ces rejets sont effectués chaque fois qu'un nombre suffisant de bugs ont été corrigés en amont depuis la dernière version, soit environ tous les trois mois. Les failles de sécurité sont également corrigés dans les versions de correction de bugs.

Un nombre de alpha, bêta et release-candidats sont également libérés en avant-première et pour les épreuves avant la version finale est faite. Bien qu'il y ait un calendrier approximatif pour chaque version, ce qui est souvent repoussée si le code ne est pas prêt. L'équipe de développement de surveiller l'état du code en exécutant la grande Unité suite de tests pendant le développement, et en utilisant le BuildBot système d'intégration continue.

Bibliothèque standard

Python a une grande bibliothèque standard, souvent cité comme l'une des grandes forces de Python, fournissant des outils pré-écrits adaptés à de nombreuses tâches. Ce est délibéré et a été décrit comme un «piles incluses« philosophie Python. Les modules de la bibliothèque standard peuvent être complétées par des modules personnalisés écrits en C ou Python. Bibliothèques Boost C ++ comprend une bibliothèque, Boost.Python, pour permettre l'interopérabilité entre C ++ et Python. En raison de la grande variété d'outils fournis par la bibliothèque standard, combiné avec la possibilité d'utiliser un langage de bas niveau comme C et C ++, qui est déjà capable de se interfacer entre autres bibliothèques, Python peut être un puissant la langue de colle entre les langues et les outils.

La bibliothèque standard est particulièrement bien adapté à l'écriture d'applications Internet-face, avec un grand nombre de formats et de protocoles standards (tels que MIME et HTTP) déjà soutenu. Modules de création des interfaces utilisateur graphiques, la connexion à bases de données relationnelles, l'arithmétique avec des décimales de précision arbitraire, la manipulation expressions régulières, et faire tests unitaires sont également inclus.

Certaines parties de la bibliothèque standard sont couverts par les spécifications (par exemple, le mise en œuvre de WSGI wsgiref suit PEP 333), mais la plupart des modules sont pas. Ils sont spécifiés par leur code, documentation interne, et suite de tests (si fourni). Cependant, parce que la plupart de la bibliothèque standard est multi-plateforme code Python, il ya seulement quelques modules qui doivent être modifiés ou complètement réécrit par les implémentations alternatives.

La bibliothèque standard ne est pas indispensable pour lancer Python ou l'intégrer dans une application Python. Blender 2.49 par exemple omet la plupart de la bibliothèque standard.

Pour tests de logiciels, la bibliothèque standard fournit l' unittest et doctest modules.

Influences sur les autres langues

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

  • Pyrex et son dérivé Cython sont traducteurs de code qui sont ciblés à l'écriture rapides extensions C pour l'interprète CPython. La langue est principalement Python avec des extensions de syntaxe pour C et C les caractéristiques de. Les deux langues produisent code compilable C en sortie.
  • Boo utilise l'indentation, une syntaxe semblable, et un modèle objet similaire. Cependant, Boo utilise typage statique et est étroitement intégré avec le framework .NET.
  • Cobra utilise l'indentation et une syntaxe similaire. "Remerciements" le document répertorie Cobra Python premier parmi les langues qui l'ont influencé. Toutefois, Cobra soutient directement concevoir par contrat, tests unitaires et option typage statique.
  • ECMAScript emprunté itérateurs, générateurs, et list comprehensions de Python.
  • Go est décrit comme incorporant la "vitesse de développement de travailler dans un langage dynamique comme Python".
  • Groovy a été motivée par le désir d'apporter la philosophie de conception de Python pour Java .
  • OCaml a une syntaxe facultative, appelée twt (Le Whitespace Thing), inspiré par Python et Haskell.

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 questions entourant, un changement à la langue (dans le cas de Python, un PEP) est également utilisé dans Tcl et Erlang cause de l'influence de Python.

Récupéré à partir de " http://en.wikipedia.org/w/index.php?title=Python_(programming_language)&oldid=411022789 "