Python (langage de programmation)

Cet article est également disponible sous forme de fichier audio.
C'est un excellent article qui vaut la peine d'être lu.
Un article de Wikipédia, l'encyclopédie libre
Aller à la navigation Aller à la recherche

Python ([ ˈpʰaɪθn̩ ], [ ˈpʰaɪθɑn ], également [ ˈpʰyːtɔn ] en allemand) est un langage de programmation de haut niveau universel, couramment interprété . [12] Il vise à promouvoir un style de programmation facile à lire et concis. [13] Par exemple, les blocs ne sont pas structurés par des accolades, mais par des indentations.

Python prend en charge plusieurs paradigmes de programmation , par ex. B. la programmation orientée objet , orientée aspect et la programmation fonctionnelle . Il offre également la saisie dynamique . Comme de nombreux langages dynamiques , Python est souvent utilisé comme langage de script . Le langage propose un modèle de développement ouvert et communautaire, soutenu par la Python Software Foundation à but non lucratif, qui maintient la définition du langage dans l'implémentation de référence CPython .

historique du développement

Guido van Rossum , le développeur de Python

Le langage a été développé au début des années 1990 par Guido van Rossum au Centrum Wiskunde & Informatica à Amsterdam en tant que successeur du langage de programmation ABC et était à l'origine destiné au système d'exploitation distribué Amoeba .

Le nom ne remonte pas, comme le suggère le logo, au serpent du genre Python du même nom , mais faisait à l'origine référence à la troupe de comédienne anglaise Monty Python . La documentation contient donc également quelques allusions à des croquis du Flying Circus . [14] Néanmoins, l' association avec les serpents s'est établie, ce qui s'est reflété dans le langage de programmation Cobra [15] et la boîte à outils Python "Boa" [16].exprime. La première version complète est sortie en janvier 1994 sous le nom de Python 1.0. Par rapport aux versions précédentes, certains concepts de programmation fonctionnelle ont été implémentés, mais ceux-ci ont ensuite été abandonnés. [17] De 1995 à 2000, de nouvelles versions sont apparues, appelées successivement Python 1.1, 1.2, etc.

Python 2.0 est sorti le 16 octobre 2000. Les nouvelles fonctionnalités comprenaient une récupération de place entièrement fonctionnelle et la prise en charge du jeu de caractères Unicode . [18] Dans la version 2.6, une aide a été intégrée pour montrer quelles séquences de code ne sont plus prises en charge par le successeur Python 3 et ne sont donc plus exécutables dans les versions basées sur celui-ci. [19]

Python 3.0 (également Python 3000) est sorti le 3 décembre 2008 après une longue période de développement. Cela inclut des modifications profondes du langage, telles que la suppression des redondances du jeu d'instructions et des constructions obsolètes. Étant donné que Python 3.0 est partiellement incompatible avec les versions antérieures, [20] la Python Software Foundation a décidé de continuer à prendre en charge Python 2.7 parallèlement à Python 3 avec de nouvelles versions jusqu'à la fin de 2019 (pour plus d'informations sur les versions 2 qui doivent encore être publiées , la fin du support et Pour obtenir de l'aide sur la migration, consultez la section Fin de Python 2 ).

Buts

Python a été conçu dans le but d'un maximum de simplicité et de clarté. Cet objectif est atteint principalement grâce à deux mesures. D'une part, la langue se débrouille avec relativement peu de mots- clés . [21] D'autre part, la syntaxe a été réduite et optimisée pour plus de clarté. Cela signifie que les scripts basés sur Python peuvent être formulés de manière beaucoup plus concise que dans d'autres langages. [22]

Au cours du développement, Van Rossum a attaché une grande importance à une bibliothèque standard gérable et facilement extensible. C'était le résultat de sa mauvaise expérience avec la langue ABC , dans laquelle le contraire est vrai. [23] Ce concept permet d'appeler des modules en Python qui ont été écrits dans d'autres langages de programmation, par exemple pour compenser les faiblesses de Python. Par exemple, les routines implémentées dans des langages de niveau inférieur tels que C peuvent être appelées pour les parties critiques en temps . [24] À l'inverse, Python peut être utilisé pour écrire des modules et des plug-ins pour d'autres programmes qui offrent le support approprié. C'est entre autres dans Blender ,Cinema 4D , GIMP , Maya , OpenOffice ou LibreOffice , PyMOL , SPSS , QGIS ou KiCad est le cas.

Python est un langage multi- paradigme . Cela signifie que Python n'oblige pas le programmeur à utiliser un style de programmation unique, mais lui permet de choisir le paradigme le mieux adapté à la tâche à accomplir. La programmation orientée objet et structurée est entièrement prise en charge, la programmation fonctionnelle et orientée aspect est prise en charge via des éléments individuels du langage. Les zones mémoire qui ne sont plus utilisées sont libérées par comptage de références . Les types de données sont gérés de manière dynamique, une vérification de type statique automatique telle que par ex. par exemple avec C++il n'y en a pas. Cependant, Python à partir de la version 3.5 prend en charge les annotations de type facultatives pour simplifier la vérification de type statique à l'aide d'un logiciel externe tel que Mypy. [25] [26]

types et structures de données

types et structures de données

Python a un grand nombre de types de données de base. En plus de l' arithmétique conventionnelle , il prend en charge de manière transparente les nombres entiers et les nombres complexes arbitrairement grands .

Les opérations habituelles sur les chaînes de caractères sont prises en charge. Cependant, les chaînes sont des objets immuables en Python (comme en Java ). Par conséquent, les opérations destinées à modifier une chaîne de caractères - telles que par ex. en remplaçant des caractères - renvoie toujours une nouvelle chaîne de caractères.

En Python, tout est objet : classes, types, méthodes, modules, etc. Le type de données est toujours lié à l'objet (la valeur ) et non à une variable, c'est-à-dire. H Les types de données sont assignés dynamiquement, comme en Smalltalk ou Lisp - et non comme en Java.

Malgré la gestion dynamique des types, Python inclut une vérification des types. C'est plus strict que Perl , mais moins strict que, disons, Objective CAML . Des conversions implicites selon le principe du canard-typage sont définies, entre autres, pour les types numériques, de sorte que l'on peut, par exemple, multiplier un nombre complexe par un entier long sans conversion de type explicite.

Avec l'opérateur de format %, il y a une conversion implicite d'un objet en chaîne. L'opérateur ==vérifie l'égalité (valeur) de deux objets. L'opérateur isvérifie l' identité réelle de deux objets. [27]

types de collections

Python a plusieurs types de collection , y compris les listes, les tuples , les ensembles (ensembles) et les tableaux associatifs (dictionnaires). Les listes, les tuples et les chaînes de caractères sont des séquences (séquences, tableaux ) et utilisent presque tous les mêmes méthodes : vous pouvez itérer sur les caractères d'une chaîne ainsi que sur les éléments d'une liste. Il existe également des objets immuables, qui ne peuvent pas être modifiés une fois créés. Les listes sont par ex. B. champs extensibles, alors que les tuples et les chaînes sont de longueur fixe et immuables.

Le but d'une telle immuabilité dépend par ex. Par exemple, cela fonctionne avec des dictionnaires , un type de données également connu sous le nom de tableau associatif . Pour assurer la cohérence des données, les clés d'un dictionnaire doivent être de type « immuable ». Les valeurs saisies dans le dictionnaire , en revanche, peuvent être de tout type.

Les ensembles sont des ensembles d'objets et sont inclus dans la portée standard de CPython à partir de la version 2.4. Cette structure de données peut contenir n'importe quel objet (différent par paires) et fournit des opérations d'ensemble telles que intersection , difference et union .

système d'objets

Le système de types de Python est aligné sur le système de classes . Bien que les types de données intégrés ne soient pas strictement des classes , les classes peuvent hériter d'un type . De cette manière, les propriétés des chaînes de caractères ou des dictionnaires peuvent être étendues, y compris les entiers. Python prend en charge l'héritage multiple .

Le langage prend directement en charge la gestion des types et des classes. Les types peuvent être lus (déterminés) et comparés, et se comportent comme des objets - en fait (comme dans Smalltalk) les types sont eux-mêmes un objet. Les attributs d'un objet peuvent être extraits sous forme de dictionnaire.

syntaxe

L'un des objectifs de conception de Python était une bonne lisibilité du code source. Les instructions utilisent souvent des mots-clés en anglais là où d'autres langues utilisent des symboles (par exemple orau lieu de ||). Pour la programmation structurée , Python possède les éléments suivants :

  • Boucles (exécution répétée) :
    • for... elsepour parcourir les éléments d'une séquence
    • while... elseà répéter tant qu'une expression Truea la valeur booléenne
  • Succursales (exécution conditionnelle) :
  • Exceptions (exécution en cas d'erreur) :
    • tryexceptelsefinallypour la gestion des exceptions
    • withexécuter un bloc avec un gestionnaire de contexte

Contrairement à de nombreux autres langages, les boucles foret les whileboucles peuvent avoir une elsebranche. Ceci n'est exécuté que si la boucle s'est entièrement déroulée et n'a pas été interrompue avec break, returnou une erreur d'exception.

Structuration par indentation

Python, comme Miranda et Haskell , utilise l' indentation comme élément structurant. Cette idée a été proposée pour la première fois par Peter J. Landin et il l'a appelée la règle du hors-jeu . Dans la plupart des autres langages de programmation, les blocs sont marqués par des parenthèses ou des mots-clés, tandis que les espaces de tailles différentes en dehors des chaînes ne portent aucune sémantique spéciale. Dans ces langues, l'indentation pour souligner visuellement un bloc est autorisée et généralement souhaitable, mais pas obligatoire. Pour les débutants en programmation, cependant, la nécessité d'un style lisible est considérée comme un avantage.

Voici un exemple de calcul de la factorielle d' un entier, une fois en C et une fois en Python :

Fonction factorielle en C :

entier factoriel ( int x ) {   
    si ( x <= 1 )   
        retour 1 ; 

    retour x * factoriel ( x - 1 );     
}

La même fonction en Python :

def  factoriel ( x ): 
    si  x  <=  1 : 
        retourne  1

    retour  x  *  factorielle ( x  -  1 )

Cependant, il faut veiller à ce que les indentations soient les mêmes dans tout le texte du programme. L'utilisation mixte d'espaces et de tabulations peut causer des problèmes, car l'interpréteur Python suppose des tabulations tous les huit espaces. Selon la configuration de l'éditeur, les onglets peuvent être affichés avec moins de huit espaces, ce qui peut entraîner des erreurs de syntaxe ou une structuration indésirable du programme. À titre préventif, vous pouvez demander à l'éditeur de remplacer les tabulations par un nombre fixe d'espaces. La distribution Python contient le module tabnanny dans la bibliothèque standard , qui permet de détecter et de corriger le mélange de tabulations et d'espaces.

Cependant, la fonction factorielle peut aussi être formulée en une seule ligne avec un opérateur ternaire , comme en C :

La fonction factorielle en C :

entier factoriel ( int x ) {   
    retourner x <= 1 ? 1 : x * factoriel ( x - 1 );           
}

La fonction factorielle en Python :

def  factoriel ( x ): 
    retourne  1  si  x  <=  1  sinon  x  *  factoriel ( x  -  1 )

programmation fonctionnelle

Coconut [28] et d'autres extensions facilitent la programmation fonctionnelle en Python. De plus, cela peut également être réalisé avec le Python conventionnel :

Les éléments syntaxiques expressifs pour la programmation fonctionnelle simplifient le travail avec des listes et d'autres types collectifs. L'une de ces simplifications est la notation de liste , qui trouve son origine dans le langage de programmation fonctionnelle Haskell ; ici dans le calcul des cinq premières puissances de deux :

nombres  =  [ 1 ,  2 ,  3 ,  4 ,  5 ] 
puissances de deux  =  [ 2  **  n  pour  n  en  nombres ]

Étant donné que Python permet aux fonctions d'apparaître en tant qu'arguments, il est également possible d'exprimer des constructions plus sophistiquées, telles que le style de passage de continuation .

Le mot clé de Python lambdapeut induire en erreur certains passionnés de programmation fonctionnelle. De tels lambdablocs en Python ne peuvent contenir que des expressions, pas des instructions. Ainsi, de telles instructions ne sont généralement pas utilisées pour renvoyer une fonction. La pratique habituelle consiste à renvoyer le nom d'une fonction locale à la place. L' exemple suivant illustre cela en utilisant une fonction simple basée sur les idées de Haskell Brooks Curry :

def  add_and_print_maker ( x ): 
    def  temp ( y ): 
        print ( " {} + {} = {} " . format ( x ,  y ,  x  +  y ))

     température de retour

Cela rend également possible le currying de manière simple afin de décomposer les objets fonctionnels génériques en objets spécifiques au problème. Voici un exemple simple :

def  curry ( func ,  argument_connu ): 
    return  lambda  argument_inconnu :  func ( argument_inconnu ,  argument_connu )

Si la curryfonction est appelée, elle attend une fonction avec deux paramètres nécessaires et le paramétrage du second paramètre de cette fonction. La valeur de retour de curryest une fonction qui fait la même chose que funcmais qui ne prend qu'un seul paramètre.

Les fermetures sont avec ce qui précède Mécanismes en Python également facilement possibles. Un exemple simple de pile , représenté en interne par une liste :

def  pile (): 
    l  =  []

    def  pop () : 
        sinon  is_empty (  ) : return l . pop ()
             

    def  push ( élément ): 
        l . ajouter ( élément )

     définir is_empty ( ): 
        return  len ( l )  ==  0

    retour  pop ,  push ,  is_empty

pop ,  push ,  is_empty  =  pile ()

De cette façon, vous obtenez les trois objets fonction pop, push, is_empty, pour modifier la pile ou vérifier les éléments qu'elle contient sans laccéder directement à .

gestion des exceptions

Python utilise largement la gestion des exceptions comme moyen de tester les conditions d'erreur. Ceci est si bien intégré à Python qu'il est parfois même possible de détecter les erreurs de syntaxe et de les gérer au moment de l'exécution.

Les exceptions présentent certains avantages par rapport aux autres techniques de gestion des erreurs couramment utilisées en programmation (telles que les valeurs de retour d'erreur et les variables d'état globales). Ils sont thread - safe et peuvent être facilement mis en cascade jusqu'au niveau supérieur du programme ou gérés à tout autre niveau de la séquence d'appel de fonction. L'utilisation appropriée de la gestion des exceptions lors de l'accès aux ressources dynamiques permet également d'éviter plus facilement certaines vulnérabilités basées sur les conditions de concurrence qui peuvent survenir lorsque l'accès est basé sur des requêtes d'état déjà obsolètes.

L'approche Python suggère d'utiliser des exceptions chaque fois qu'une condition d'erreur peut survenir. Ce principe est utile, par exemple, lors de la construction d'invites robustes :

while  True : 
    num  =  input ( "Entrez un entier : " )

    try : 
        num  =  int ( num ) 
    except  ValueError : 
        print ( "A _number_, please!" ) 
    else : 
        break

Ce morceau de code continue de demander à l'utilisateur un nombre jusqu'à ce qu'il entre une chaîne qui peut être int()convertie en entier via . La gestion des exceptions empêche qu'une entrée incorrecte ne conduise à une erreur d'exécution qui force l'arrêt du programme.

De même, le signal d' interruption ( , souvent Ctrl+C) , qui n'est pas pris en compte ici, peut être SIGINTintercepté et géré à l'aide de la gestion des exceptions dans Python ( except KeyboardInterrupt: …).

bibliothèque standard

La puissante bibliothèque standard est l'une des plus grandes forces de Python, ce qui la rend adaptée à de nombreuses applications. La plupart d'entre eux sont indépendants de la plate-forme, de sorte que même les programmes Python plus volumineux s'exécutent souvent sur Unix , Windows , macOS et d'autres plates-formes sans modification. Les modules de la bibliothèque standard peuvent être complétés par des modules écrits en C ou Python vous-même.

La bibliothèque standard est particulièrement adaptée aux applications Internet, avec la prise en charge d'un grand nombre de formats et de protocoles standard (tels que MIME et HTTP ). Des modules pour créer des interfaces utilisateur graphiques, se connecter à des bases de données relationnelles et manipuler des expressions régulières sont également inclus.

Interfaces utilisateur graphiques (GUI)

En Python (comme en Perl et Tcl ), une interface utilisateur graphique (GUI) peut être rapidement créée avec Tk en utilisant le module Tkinter fourni . Il existe également une variété d'autres emballages d'autres fournisseurs. Ils fournissent des connexions ( liaisons en anglais ) aux kits d' outils GUI tels que par ex. B. PyGTK , PyQt , wxPython , PyObjC et Py FLTK sont disponibles.

En plus de Tkinter, un module pour dessiner des graphiques de tortues est également inclus.

Exemple du module Tkinter

Exemple d'une fenêtre Tkinter simple
de l'  importation tkinter  * 

fenêtre  =  Tk () 
fenêtre . geometry ( "200x100" ) 
label  =  Label ( window ,  text = "Hello World!" ) 
label . paquet ()

def  commande (): 
    fenêtre . détruire ()

bouton  =  bouton ( fenêtre ,  texte = "OK" ,  commande = commande ) 
bouton . fenêtre pack () 
. boucle principale ()

Exemple de module graphique tortue

Résultat du code source spécifié
importer  la tortue 
à partir de la  vitesse d' importation de la tortue  , réinitialiser , aller à   

réinitialiser () 
vitesse ( 0 ) 
tortue . x  =  - 200 
tortue . y  =  200

tandis que  la tortue . y  !=  - 200 : 
    goto ( tortue . x ,  tortue . y ) 
    tortue . x  =  -  tortue . x 
    tortue . y  =  -  tortue . y 
    goto ( tortue . x ,  tortue . y ) 
    goto ( 0 ,  0 ) 
    tortue . y  =  -  tortue. ta 
    tortue . x  =  -  tortue . x 
    tortue . y  -=  5

Plus de graphiques

  • Cercle coloré

    Cercle coloré

  • étoile

    étoile

  • La tortue dessine un carré

    La tortue dessine un carré

Exemple

L'algorithme de tri compact Quicksort est donné ici à titre d'exemple non trivial :

def  tri rapide ( liste ): 
    si  len ( liste )  <=  1 : 
        renvoie la  liste

    élément pivot  =  liste . pop () 
    left   =  [ élément  pour  élément  dans la  liste  si  élément  < élément  pivot ] 
    right  =  [ élément  pour  élément  dans la  liste  si  élément  >= élément  pivot ]

    return  tri rapide ( gauche )  +  [ élément pivot ]  + tri  rapide ( droite )

Ici, en particulier, la notation de liste pour les variables à gauche et à droite permet une représentation compacte. A titre de comparaison, une formulation itérative de ces deux lignes :

... 
    left ,  right  =  [],  []           # crée des listes vides pour 
    pivotelement gauche et droite  =  list . pop ()       # prend le dernier élément de la liste pour référence

    for  element  in  list :            # boucle sur le reste des éléments de la liste ... 
        if  element  <  pivotelement :   # ... et compare à l'élément pivot 
            sur la gauche . ajouter ( élément )    # si plus petit alors ajouter à la liste de gauche 
        sinon : 
            droite . append ( element )   # sinon, s'il n'est pas plus petit, ajoutez à la liste de droite 
...

Ceci n'est qu'un exemple de la paperasserie enregistrée par la notation de liste. En fait, la formulation itérative est ici plus rapide, puisque le champ "liste" n'est itéré qu'une seule fois par passe et non deux comme dans la notation en liste.

Utilisation interactive

Comme Lisp , Ruby , Groovy et Perl , l'interpréteur Python prend également en charge un mode interactif dans lequel les expressions peuvent être saisies sur le terminal et les résultats visualisés immédiatement. Ceci est pratique non seulement pour les débutants qui apprennent le langage, mais aussi pour les programmeurs expérimentés : des morceaux de code peuvent être testés de manière interactive avant d'être inclus dans un programme approprié.

De plus, Python Shell est un interpréteur de ligne de commande pour divers systèmes d'exploitation informatiques de type Unix qui peuvent traiter une entrée directe sous forme Python en plus des commandes classiques du shell Unix. IPython est un shell Python interactif populaire avec des fonctionnalités considérablement étendues.

implémentations

En plus de l' implémentation de référence CPython , il existe un interpréteur Python implémenté Java appelé Jython qui expose la bibliothèque Java Runtime Environment à Python. En plus des interpréteurs, il existe des compilateurs qui traduisent le code Python dans un autre langage de programmation : avec Cython , le code Python peut être traduit en extensions C efficaces ou du code C++ ou C externe peut être lié. Le compilateur IronPython existe également pour la plateforme .Net Framework ou Mono . Afin d'utiliser Python comme langage de script pour les programmes en C++ , leBoostez la bibliothèque Python ou (dans les projets plus récents) Cython utilisé. Un analyseur Python pour Parrot et un compilateur juste-à-temps financé par l'UE pour Python, PyPy , écrit en Python, sont également en cours de développement. Il existe également un interpréteur Python pour les microcontrôleurs appelé MicroPython . [29]

environnement de développement

Outre IDLE , qui est souvent installé avec Python et se compose principalement d'un environnement texte et d'un shell , certains environnements de développement (IDE) complets pour Python ont également été développés, tels que Eric Python IDE , Spyder ou PyCharm . Il existe également des plug-ins pour les grands IDE tels que Eclipse , Visual Studio et NetBeans . Les éditeurs de texte pour les programmeurs comme Vim et Emacs peuvent également être adaptés pour Python : un mode Python simple est déjà intégré, et des extensions plus confortables peuvent être ajoutées.

Pour les divers kits d' outils GUI , tels que B. Tkinter ( GUI Builder ), WxPython ( wxGlade ), PyQt ( Qt Designer ), PySide , PyGTK ( Glade ), Kivy ou PyFLTK , certains éditeurs peuvent être utilisés pour créer des interfaces utilisateur graphiques de manière relativement simple.

gestion des colis

Python prend en charge la création de packages ; distutils et setuptools aident à cela . Les packages sont stockés sur PyPI, le Python Package Index, et récupérés à partir de là pour l'installation. pip ou, sur les anciens systèmes, easy_install est généralement utilisé comme gestionnaire de packages . Les versions des packages Anaconda (distribution Python) sont gérées par le gestionnaire de packages conda . [30]

diffusion et utilisation

Python est disponible gratuitement pour la plupart des systèmes d'exploitation courants et est livré en standard avec la plupart des distributions Linux. Pour intégrer Python dans les serveurs Web, WSGI à l'échelle du serveur Web est utilisé, ce qui contourne les inconvénients de CGI . WSGI fournit une interface universelle entre le serveur Web et Python (framework).

Un certain nombre de frameworks d'applications Web exploitent Python, notamment Django , Pylons , SQLAlchemy , TurboGears , web2py , Flask et Zope . Il existe également un interpréteur Python pour le système d'exploitation Symbian , donc Python est disponible sur divers téléphones mobiles . Python fait partie d' AmigaOS 4.0 dans la version 2.5.1.

Un usage commercial

Des projets commerciaux bien connus tels que Google et YouTube sont en partie basés sur Python. [31] Le langage est aussi parfois utilisé dans l'industrie du jeu, par exemple dans EVE Online , World in Conflict et Civilization IV .

Pendant l'apprentissage

Python est souvent utilisé dans l'enseignement car Python est d'une part convivial pour les débutants, mais d'autre part il est puissant et suffisamment puissant pour enseigner les bases théoriques de la programmation et des applications modernes jusqu'à l'analyse de données complexes, la programmation graphique ou le développement d'applications de bases de données. . [32] [33] [34] [35] [36] [37] Les manuels explicitement destinés aux jeunes sans expérience en programmation soutiennent et soulignent cette évolution. [38]

Le projet $100 Laptop utilise Python comme langage d'interface utilisateur par défaut. Étant donné que la calculatrice de 100 $ est conçue pour l'éducation scolaire des enfants, le code source Python en cours d'exécution doit être affiché en appuyant sur un bouton lors de l'utilisation de l' interface utilisateur graphique "Sugar" conçue à cet effet. [39] L'objectif est de donner aux enfants la possibilité de découvrir les technologies de l'information sous-jacentes dans la vie réelle et de regarder « dans les coulisses » à volonté.

L'ordinateur monocarte Raspberry Pi (Python Interpreter) était initialement prévu pour être livré avec un interpréteur Python intégré en ROM . [40] Python est encore aujourd'hui l'un des langages préférés du Raspberry Pi. Son système d'exploitation standard , Raspberry Pi OS , est livré avec une grande bibliothèque Python pour contrôler le matériel.

Python est utilisé dans le monde entier dans l'enseignement de l'informatique dans les écoles et les universités. Un certain nombre de plateformes d'apprentissage en ligne (gratuites) conçues de manière didactique pour Python sont désormais disponibles pour l'école et l'auto-apprentissage à partir de la 6e année - principalement dans plusieurs langues. Le cours en ligne Computer Science Circles z. B. est fourni par l'Université de Waterloo au Canada. La version allemande est gérée par les concours nationaux allemands d'informatique. [41] TigerJython, hébergé par la Haute école pédagogique de Berne, est principalement utilisé dans les cours d'informatique en Suisse. [42]

Dans la science

Python est largement utilisé dans la communauté scientifique , principalement en raison de la facilité de prise en main de la programmation et du large éventail de bibliothèques scientifiques parmi lesquelles choisir. Python est souvent utilisé ici dans un cahier Jupyter . [43] Les calculs numériques et le traitement visuel des résultats sous forme de graphiques se font principalement avec NumPy et Matplotlib . Anaconda et SciPy regroupent de nombreuses bibliothèques scientifiques Python, ce qui les rend plus accessibles. Avec TensorFlow , Keras , Scikit-learn , PyTorchetc. il existe de grandes bibliothèques pour la recherche et l'utilisation de l'apprentissage automatique et de l'apprentissage profond ( intelligence artificielle ).

Fin de Python 2

La prise en charge de Python 2 est terminée. La dernière version 2 était la 2.7.18 du 20 avril 2020 ; [44] [45] Python 2 n'est plus pris en charge à partir de cette date. [46] [47] Cependant, il existe une documentation diverse et abondante sur le basculement [48] [49] [50] et aussi des outils qui aident à la migration [51] ou permettent d'écrire du code qui fonctionne avec Python 2 et 3 fonctionne. [52] [53] [54] [55] [56]

critique

Lors de la définition de méthodes, le paramètre self , qui correspond à l'instance dont la méthode est appelée, doit être explicitement spécifié en tant que paramètre. Ceci est perçu par Andrew Kuchling, auteur et développeur Python de longue date [57] , comme inélégant et non orienté objet. [58] Le créateur de Python van Rossum, d'autre part, souligne qu'il est nécessaire d'activer certaines constructions importantes. [59] L'un des principes de Python est également "Explicit is better than implicite". [60]

Jusqu'à la version 3.0, il était critiqué que dans une définition de méthode, appeler la version de classe de base de la même méthode nécessitait de spécifier explicitement la classe et l'instance. Cela a été considéré comme une violation du principe DRY (" Ne vous répétez pas "); cela empêchait également de renommer. Dans Python 3.0, cette critique a été corrigée. [61]

Sur les systèmes multiprocesseurs , le Global Interpreter Lock (GIL) de CPython entrave l'efficacité des applications Python qui utilisent le multithreading logiciel . Cependant, cette limitation n'existe pas sous Jython ou IronPython . Jusqu'à présent, il n'y a pas de plans officiels pour remplacer le GIL. Au lieu de cela, il est recommandé d'utiliser plusieurs processus communicants au lieu de threads. [62] [63]

Dans les implémentations dominantes, la vitesse d'exécution est plus lente que de nombreux langages compilables, [64] mais similaire à Perl , [65] PHP , [66] Dart [67] et Ruby . [68] C'est en partie parce que le développement de CPython donne la priorité à la clarté du code plutôt qu'à la vitesse. [69] Référence est faite à des autorités telles que Donald Knuth et Tony Hoare , qui déconseillent une optimisation prématurée. S'il y a des problèmes de vitesse qui ne peuvent pas être résolus en optimisant le code Python, [70]Des compilateurs JIT tels que PyPy sont utilisés à la place , ou les fonctions urgentes sont externalisées vers des langages de niveau inférieur tels que C ou Cython .

Littérature

Pour commencer

identifiants

plus loin

liens web

Commons : Python  - Collection d'images, de vidéos et de fichiers audio
Wikibooks : Python 2 sur Linux  - Matériel d'apprentissage et d'enseignement

tutoriels

Pour les débutants

Pour avancé

Pour les enfants

les détails

  1. Historique et licence . (consulté le 19 août 2016).
  2. docs.python.org . (consulté le 3 juillet 2019).
  3. docs.python.org . (consulté le 19 août 2016).
  4. Python 3.10.5 est disponible . 6 juin 2022 (anglais, consulté le 6 juin 2022).
  5. impythonist.wordpress.com . (consulté le 19 août 2016).
  6. Pourquoi Python a-t-il été créé en premier lieu ? . Python Software Foundation (consulté le 22 mars 2017).
  7. a b Classes Le Tutoriel Python . Fondation du logiciel Python.
  8. Une introduction à Python pour les programmeurs UNIX/C .
  9. HOWTO Programmation fonctionnelle .
  10. www.python.org . (consulté le 19 août 2016).
  11. docs.python.org .
  12. À quoi sert Python ? . Dans : FAQ générale sur Python . Fondation Python. Consulté le 5 septembre 2008.
  13. Qu'est-ce que Python ? Résumé exécutif . Dans : Documentation Python . Fondation Python. Récupéré le 21 mars 2007.
  14. FAQ Python officielle , ainsi que Tutoriel Python, Chapitre 1
  15. Le langage de programmation Cobra . Dans : cobra-language.com .
  16. Accueil Boa Constructor . Dans : boa-constructor.sourceforge.net .
  17. Guido van Rossum : Commentaire sur la suppression de certains concepts fonctionnels. Consulté le 11 août 2014 (anglais).
  18. A. Kuchling, Moshe Zadka : Documentation Python 2.0. Python Software Foundation Récupéré le 11/08/2014 .
  19. heise.de : Python 2.6 ouvre les chemins vers la version 3 du 2 octobre 2008, récupéré le 4 octobre 2008
  20. Guido van Rossum : Documentation Python 3.0. Python Software Foundation, 14 février 2009. Récupéré le 11 août 2014 .
  21. 2. Analyse lexicale Documentation Python 3.7.2rc1. (Anglais)
  22. Marty Alchin : Pro Python . Editeur : Apress. 2010, ISBN 978-1-4302-2757-1 , pages 6 (anglais).
  23. Bill Venners : Entretien avec Guido van Rossum. Artima, 13 janvier 2003, récupéré le 15 août 2014 (anglais).
  24. Utilisation de modules en langues étrangères. Python Software Foundation, consulté le 10 septembre 2019 .
  25. Guido van Rossum , Ivan Levkivskyi : PEP 483 -- La théorie des indices de type. Python Software Foundation le 19 décembre 2014. Récupéré le 18 octobre 2020 .
  26. Guido van Rossum , Jukka Lehtosalo, Łukasz Langa : PEP 484 -- Type Hints. Python Software Foundation, 29 septembre 2014. Récupéré le 18 octobre 2020 .
  27. Mark Lutz, David Ascher : Apprendre Python, 2e édition . Dans : Safari Livres en ligne . 23 décembre 2003.
  28. Noix de coco (extension de Python)
  29. MicroPython – Python pour les microcontrôleurs . Dans : micropython.org .
  30. Documentation Conda. Consulté le 25 février 2016 (anglais).
  31. Citations sur Python . Consulté le 25 juin 2011.
  32. Computer Science Circles - un service gratuit du Centre for Education in Mathematics and Computing, University of Waterloo.
  33. Apprendre à programmer avec Python . App Camps asbl, Hambourg
  34. Programmation pour la science des données avec Python , Udacity
  35. ↑ Premiers pas avec la programmation Python . Cours Web 2, 3 septembre 2017
  36. Python – le langage de programmation pour la programmation impérative et orientée objet . Serveur d'éducation Berlin-Brandebourg
  37. Programmation avec Python . Serveur d'éducation Rhénanie-Palatinat
  38. Comparer par ex. B. Programmation super facile - entrée facile dans Scratch et Python . par Carol Vorderman et Jon Woodcock, Dorling Kindersley Verlag, ou Python 4 Kids par Gregor Lingl, Mitp Verlag
  39. OLPC Wiki : " Python pour l'ordinateur portable à 100 $ "
  40. Karin Zühlke : Pour la première fois »Live on stage« : Farnell montre la progéniture du Raspberry Pi .
  41. Apprendre à programmer . Concours nationaux d'informatique. Un projet de la Gesellschaft für Informatik e. V., le groupe Fraunhofer pour les TIC et l'Institut Max Planck pour l'informatique.
  42. Flyer TigerJython – concepts de programmation avec Python (PDF; 468 Ko) Haute école pédagogique bernoise
  43. Jupyter, Mathematica et l'avenir du document de recherche. paulromer.net, 13 avril 2018, consulté le 12 décembre 2019 (en anglais).
  44. Benjamin Peterson : Python Insider : Python 2.7.18, la dernière version de Python 2. Dans : Python Insider. 20 avril 2020, récupéré le 12 juillet 2022 .
  45. heise en ligne : Langages de programmation : Vive Python 3 - version finale de Python 2. Récupéré le 12 juillet 2022 .
  46. Python Software Foundation : communiqué de presse du 20 décembre 2019. Récupéré le 12 juillet 2022 (anglais).
  47. Golem.de : Actualité informatique pour les professionnels. Récupéré le 12 juillet 2022 .
  48. Portage du code Python 2 vers Python 3 — documentation Python 3.7.13. Récupéré le 12 juillet 2022 .
  49. Le Guide de portage Python 3 conservateur — Documentation du Guide de portage Python 3 conservateur 1.0. Récupéré le 12 juillet 2022 .
  50. Lennart Regebro : Supporting Python 3 — Supporting Python 3 : Un guide détaillé. Récupéré le 12 juillet 2022 (anglais).
  51. 25.4. 2to3 - Traduction automatisée de code Python 2 à 3 — Documentation Python 2.7.18. Récupéré le 12 juillet 2022 .
  52. six : pypi.python.org et https://pythonhosted.org/six/
  53. Python Modernize — modernise la documentation 0.6.1. Récupéré le 12 juillet 2022 .
  54. Compatibilité Python 2/3 simple, propre et fiable — Documentation Python-Future. Récupéré le 12 juillet 2022 .
  55. Victor Stinner : sixer : Ajout de la prise en charge de Python 3 aux applications Python 2 à l'aide du module six. Récupéré le 12 juillet 2022 .
  56. limodou : 2to6. 25 juin 2019, récupéré le 12 juillet 2022 .
  57. AM Kuchling. Consulté le 1er septembre 2020 (anglais).
  58. http://www.amk.ca/python/writing/warts.html ( Memento du 2 octobre 2003 sur Internet Archive )
  59. Guido van Rossum : Pourquoi le moi explicite doit rester
  60. Tim Peters, Le Zen de Python. Python Software Foundation, 19/08/2004, récupéré le 12/08/2014 .
  61. PEP 3135 - Nouveau Super . Dans : Python.org .
  62. FAQ sur les bibliothèques et les extensions — documentation Python 3.7.0 . Dans : Python.org .
  63. Guido van van Rossum : Il n'est pas facile d'enlever le GIL . Dans : Artima.com .
  64. Python-C . Archivé de l' original le 26 décembre 2015. Récupéré le 25 décembre 2015.
  65. Python-Perl . Archivé de l' original le 26 décembre 2015. Récupéré le 25 décembre 2015.
  66. Benchmark comparatif Python-PHP . Archivé de l' original le 26 décembre 2015. Récupéré le 25 décembre 2015.
  67. Benchmark comparatif Python-Dart . Archivé de l' original le 26 décembre 2015. Récupéré le 25 décembre 2015.
  68. Comparaison de benchmark Python–Ruby . Archivé de l' original le 26 décembre 2015. Récupéré le 25 décembre 2015.
  69. ( page plus disponible , rechercher dans les archives web : Python Culture )@1@2Vorlage:Toter Link/www6.uniovi.es
  70. Python Patterns - Anecdote d'optimisation . Dans : Python.org .