Python (langage de programmation)
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!
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 2.7.1 / Novembre 27 2010 |
Preview | 3.2 RC 1/16 Janvier 2011 |
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 |
|
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
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, avecelse
etelif
(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 parexcept
clauses; il garantit ??galement que code de nettoyage dans unfinally
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 |
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.