Différences entre versions de « Python »

De Didaquest
Aller à la navigationAller à la recherche
m (Omdaporche a déplacé la page Pyton vers Python)
 
(68 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{widget:NavigationFicheConceptuelle}}
+
{{Widget:Fiche-Conceptuelle-Haut}}
{{widget:HautFicheConceptuelle}}
 
{{widget:PBEducation}}<!-- La syntaxe suivante ne doit pas être modifiée-->
 
  
 
= {{Widget:Traduction-Fiche}} =
 
= {{Widget:Traduction-Fiche}} =
{{Fiche Didactique Traduction
 
<!-- *********************************************************************** -->
 
<!-- ************************* Début *************************************** -->
 
<!-- Mettre le concept principal de la thématique et ses éventuelles traductions-->
 
|Concepts Traduits= <!-- Ne pas Modifier  -->
 
<!-- Ajouter une ligne /[[..........]] pour chaque nouvelle Traduction      -->
 
<!-- Supprimer la ou les lignes de Traduction non utiles                    -->
 
<!-- ****************** Commercez les modifications ***********************  -->
 
  
[[Python]] (Français)  
+
<!-- ***********************************************************************-->
 +
<!-- *************** Début Fiche Didactique Traduction**********************-->
 +
{{Fiche Didactique Traduction <!---------------------------------------------->
 +
<!--Mettez le concept principal et ses éventuelles traductions --------------->
 +
|Concepts Traduits=<!-- Ajouter une ligne /[[......]] pour chaque Traduction-->
 +
<!-- Supprimez la ou les lignes de Traduction non utiles --------------------->
 +
<!-- ****************** Commercez les modifications ************************-->
 +
 
 +
[[{{FULLPAGENAME}}]] (Français)  
 
/ [[Python]]  (Anglais)  
 
/ [[Python]]  (Anglais)  
/ [[الثعبان]] (Arabe)
+
/ [[Python]] (Arabe "ne possède pas de traduction")
 +
 
 +
}}<!-- ************** Fin Fiche Didactique Traduction ********************* -->
  
<!-- ************************* Fin ***************************************** -->
 
}}
 
  
 
= {{Widget:Definition-Fiche}} =
 
= {{Widget:Definition-Fiche}} =
 +
 
== {{Widget:Disciplines-Fiche}} ==
 
== {{Widget:Disciplines-Fiche}} ==
{{Fiche Didactique Disciplines
+
<!--************************* Début Fiche-Disciplines-Thématiques *************************************-->
<!-- ************************* Début *************************************** -->
+
{{Fiche-Disciplines-Thématiques <!----------------------------------------------------------------------->
<!-- Indiquer le(s) Domaine(s) ou Discipline(s) ou Thématique(s) en relation avec le concept principale -->
+
<!--Indiquez le(s) Domaine(s) ou Discipline(s) ou Thématique(s) en relation avec le concept principale -->
<!-- Compléter les pointillés sans Supprimer les lignes non complétées -->
+
<!--Complétez, Supprimez ou Ajoutez des lignes (jusqu'à 50), Exemples: Mathématique, Economie, Biologie-->
<!-- Exemple: Mathématique ou Philosophie ou Economie ou Biologie           -->
+
<!--****************** Commercez les modifications: Fiche-Disciplines-Thématiques *********************-->
|Variable 1= (Concepts) <!-- Ne pas Modifier  -->
+
|Domaine-Discipline-Thématique-1= Programmation                       
<!-- ****************** Commercez les modifications ***********************  -->
+
|Domaine-Discipline-Thématique-2= Informatique
 +
|Domaine-Discipline-Thématique-3= Algorithmique
 +
|Domaine-Discipline-Thématique-4= Robotique
 +
|Domaine-Discipline-Thématique-5= Développement Web
 +
|Domaine-Discipline-Thématique-6= Simulation
 +
|Domaine-Discipline-Thématique-7= Automate
 +
|Domaine-Discipline-Thématique-8= Intelligence artificielle
 +
|Domaine-Discipline-Thématique-9= Raspberry pi
 +
|Domaine-Discipline-Thématique-10= Micro:bit
 +
|Domaine-Discipline-Thématique-11= EV3
 +
|Domaine-Discipline-Thématique-12= Développement mobile
 +
 
  
|Domaine, Discipline, Thématique 1= Algorithmique                         
+
}}<!--****************** Fin modifications: Fiche-Disciplines-Thématiques *****************************-->
|Domaine, Discipline, Thématique 2= Informatique
 
|Domaine, Discipline, Thématique 3= Programmation
 
|Domaine, Discipline, Thématique 4= Mathématique
 
|Domaine, Discipline, Thématique 5= .......
 
|Domaine, Discipline, Thématique 6= .......
 
|Domaine, Discipline, Thématique 7= .......
 
|Domaine, Discipline, Thématique 8= .......
 
|Domaine, Discipline, Thématique 9= .......
 
|Domaine, Discipline, Thématique 10= .......
 
<!-- ************************* Fin ***************************************** -->
 
}}
 
  
 
== {{Widget:Definition-ecrite-Fiche}} ==
 
== {{Widget:Definition-ecrite-Fiche}} ==
{{Fiche Didactique Definition
+
 
<!-- ************************* Début *************************************** -->
+
 
<!-- Définition : Donner une ou plusieurs définition (s)                     -->
+
<!-- ******** Début Fiche Didactique Definition ********************-->
<!-- Compléter les pointillés et Supprimer les lignes non utilisées         -->
+
{{Fiche Didactique Definition <!-------------------------------------->
 +
<!-- Définition : Donner une ou plusieurs définition (s)           -->
 +
<!-- Compléter les pointillés et Supprimer les lignes non utilisées -->
 
|Définition= <!-- Ne pas Modifier  -->
 
|Définition= <!-- Ne pas Modifier  -->
<!-- ****************** Commercez les modifications *********************** -->
+
<!-- *************** Commercez les modifications *******************-->
 +
 
 +
 
 +
<span style="color:#000000;">'''Date de première version&nbsp;: </span>[https://fr.wikipedia.org/wiki/20_février 20]<span style="color:#000000;">&nbsp;</span>[https://fr.wikipedia.org/wiki/Février_1991 février]<span style="color:#000000;">&nbsp;</span>[https://fr.wikipedia.org/wiki/1991 19]<span style="color:#000000;">9</span>[https://fr.wikipedia.org/wiki/Python_(langage)#cite_note-1 1]
 +
 
 +
[https://fr.wikipedia.org/wiki/Paradigme_(programmation) Paradigmes]<span style="color:#000000;">&nbsp;:</span>[https://fr.wikipedia.org/wiki/Programmation_orientée_objet Objet]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Programmation_impérative impératif]<span style="color:#000000;">&nbsp;et&nbsp;</span>[https://fr.wikipedia.org/wiki/Langage_interprété interprété]
 +
 
 +
<span style="color:#000000;">'''Auteur&nbsp;:</span>[https://fr.wikipedia.org/wiki/Guido_van_Rossum Guido van Rossum]
 +
 
 +
<span style="color:#000000;">'''Développeurs&nbsp;: </span>[https://fr.wikipedia.org/wiki/Python_Software_Foundation Python Software Foundation]
 +
 
 +
[https://fr.wikipedia.org/wiki/Version_d%27un_logiciel Dernière version]<span style="color:#000000;">: 3.</span><span style="color:#000000;">8.3 (20 mai 2020)'''</span>
 +
 
 +
<span style="color:#000000;">'''Typage&nbsp;: </span>[https://fr.wikipedia.org/wiki/Typage_fort Fort]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Typage_dynamique dynamique]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Duck_typing duck typing]
 +
 
 +
<span style="color:#000000;">'''Influencé par&nbsp;: </span>[https://fr.wikipedia.org/wiki/Typage_fort Fort]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Typage_dynamique dynamique]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Duck_typing duck typing]
 +
 
 +
<span style="color:#000000;">'''Implémentations&nbsp;: </span>[https://fr.wikipedia.org/wiki/CPython CPython]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Jython Jython]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/IronPython IronPython]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/PyPy PyPy]
 +
 
 +
<span style="color:#000000;">'''Écrit</span><span style="color:#000000;"> en&nbsp;: '''</span>[https://fr.wikipedia.org/wiki/C_(langage) C]<span style="color:#000000;">'''&nbsp;pour CPython,&nbsp;'''</span>[https://fr.wikipedia.org/wiki/Java_(langage) Java]<span style="color:#000000;">'''&nbsp;pour Jython,&nbsp;'''</span>[https://fr.wikipedia.org/wiki/C_sharp C#]<span style="color:#000000;">'''&nbsp;pour IronPython et en Python lui-même pour PyPy'''</span>
 +
 
 +
<div style="color:#000000;">'''Système d’exploitation&nbsp;: Multiplate-forme'''</div>
 +
 
 +
<div style="color:#000000;">'''Licence&nbsp;: licence libre Python Software Foundation'''</div>
 +
 
 +
<span style="color:#000000;">'''Site web&nbsp;: </span>[http://www.python.org/ www.python.org]
 +
 
 +
<div style="color:#000000;">'''Extension de fichier&nbsp;: py, pyc, pyd, pyo, pyw et pyz'''</div>
 +
 
 +
 
 +
{| style="border-spacing:0;margin:auto;width:17cm;"
 +
|-
 +
||
 +
|-
 +
|| <span style="color:#000000;">'''Date de première version&nbsp;: </span>[https://fr.wikipedia.org/wiki/20_février 20]<span style="color:#000000;">&nbsp;</span>[https://fr.wikipedia.org/wiki/Février_1991 février]<span style="color:#000000;">&nbsp;</span>[https://fr.wikipedia.org/wiki/1991 19]<span style="color:#000000;">9</span>[https://fr.wikipedia.org/wiki/Python_(langage)#cite_note-1 1]
 +
 
 +
[https://fr.wikipedia.org/wiki/Paradigme_(programmation) Paradigmes]<span style="color:#000000;">&nbsp;:</span>[https://fr.wikipedia.org/wiki/Programmation_orientée_objet Objet]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Programmation_impérative impératif]<span style="color:#000000;">&nbsp;et&nbsp;</span>[https://fr.wikipedia.org/wiki/Langage_interprété interprété]
 +
 
 +
<span style="color:#000000;">'''Auteur&nbsp;:</span>[https://fr.wikipedia.org/wiki/Guido_van_Rossum Guido van Rossum]
 +
 
 +
<span style="color:#000000;">'''Développeurs&nbsp;: </span>[https://fr.wikipedia.org/wiki/Python_Software_Foundation Python Software Foundation]
 +
 
 +
[https://fr.wikipedia.org/wiki/Version_d%27un_logiciel Dernière version]<span style="color:#000000;">: 3.</span><span style="color:#000000;">8.3 (20 mai 2020)'''</span>
 +
 
 +
<span style="color:#000000;">'''Typage&nbsp;: </span>[https://fr.wikipedia.org/wiki/Typage_fort Fort]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Typage_dynamique dynamique]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Duck_typing duck typing]
 +
 
 +
<span style="color:#000000;">'''Influencé par&nbsp;: </span>[https://fr.wikipedia.org/wiki/Typage_fort Fort]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Typage_dynamique dynamique]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Duck_typing duck typing]
 +
 
 +
<span style="color:#000000;">'''Implémentations&nbsp;: </span>[https://fr.wikipedia.org/wiki/CPython CPython]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Jython Jython]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/IronPython IronPython]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/PyPy PyPy]
 +
 
 +
<span style="color:#000000;">'''Écrit</span><span style="color:#000000;"> en&nbsp;: '''</span>[https://fr.wikipedia.org/wiki/C_(langage) C]<span style="color:#000000;">'''&nbsp;pour CPython,&nbsp;'''</span>[https://fr.wikipedia.org/wiki/Java_(langage) Java]<span style="color:#000000;">'''&nbsp;pour Jython,&nbsp;'''</span>[https://fr.wikipedia.org/wiki/C_sharp C#]<span style="color:#000000;">'''&nbsp;pour IronPython et en Python lui-même pour PyPy'''</span>
 +
 
 +
<div style="color:#000000;">'''Système d’exploitation&nbsp;: Multiplate-forme'''</div>
 +
 
 +
<div style="color:#000000;">'''Licence&nbsp;: licence libre Python Software Foundation'''</div>
 +
 
 +
<span style="color:#000000;">'''Site web&nbsp;: </span>[http://www.python.org/ www.python.org]
 +
 
 +
<div style="color:#000000;">'''Extension de fichier&nbsp;: py, pyc, pyd, pyo, pyw et pyz'''</div>
 +
|-
 +
|}
 +
<div style="color:#000000;">[https://fr.wikipedia.org/wiki/Python_(langage)#cite_note-1 ]</div>
 +
 
 +
 
 +
 
 +
* Python est un [[langage de script de haut niveau]], structuré et [[open source]]. Il est multiplateformes, multi-paradigme et multi-usage.
 +
* Conçu pour être [[langage de programmation orientée objet| orientée objet]], il n'en dispose pas moins d'outils permettant de se livrer à la [[langage de programmation fonctionnelle |programmation fonctionnelle]] ou [[langage de programmation impérative |impérative]]; c'est d'ailleurs une des raisons qui lui vaut son appellation de « langage agile ».
 +
* Il est également apprécié par certains pédagogues qui y trouvent un langage où la syntaxe, clairement séparée des mécanismes de bas niveau, permet une initiation aisée aux concepts de base de la programmation.
 +
 
 +
* Python est un [[langage de programmation interprété]], [[langage de programmation portable | portable]], [[langage de programmation dynamique| dynamique]], [[langage de programmation extensible| extensible]], [[langage de programmation gratuit| gratuit]], qui permet (sans l'imposer) une approche [[Programmation modulaire | modulaire]] et [[langage de programmation orientée objet| orientée objet]] de la programmation.
  
*Python est un langage de script de haut niveau, structuré et open source. Il est multi-paradigme et multi-usage.
 
*Conçu pour être orienté objet, il n'en dispose pas moins d'outils permettant de se livrer à la programmation fonctionnelle ou impérative; c'est d'ailleurs une des raisons qui lui vaut son appellation de « langage agile ».
 
*Il est également apprécié par certains pédagogues qui y trouvent un langage où la syntaxe, clairement séparée des mécanismes de bas niveau, permet une initiation aisée aux concepts de base de la programmation.
 
<!-- ************************* Fin ***************************************** -->
 
  
<!-- *********************************************************************** -->
+
<!-- ******** Fin Définition Générale ***************************** -->
<!-- ************************* Début *************************************** -->
+
<!-- ************* Début Définition Approfondissement ************* -->
 
<!-- Approfondissement des définitions à travers des classifications, des catégorisations, des typologies, ou autre.... -->
 
<!-- Approfondissement des définitions à travers des classifications, des catégorisations, des typologies, ou autre.... -->
<!-- Compléter les pointillés et Supprimer les lignes non utilisées          -->
+
|Typologie= <!------------------------------------ Ne pas Modifier  -->
|Typologie= <!-- Ne pas Modifier  -->
+
<!-- ****************** Commercez les modifications ****************-->
<!-- ****************** Commercez les modifications ***********************  -->
+
* Python est développé depuis 1989 par [[Guido van Rossum]] et de nombreux contributeurs bénévoles.
 
+
* Python favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et d'un système de gestion d'exceptions ; il est ainsi similaire à [[Perl]], [[Ruby]], [[Scheme]], [[Smalltalk]] et [[Tcl]].
*Python est un langage de programmation objet, multi-paradigme et multiplateformes. Il favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et d'un système de gestion d'exceptions ; il est ainsi similaire à Perl, Ruby, Scheme, Smalltalk et Tcl.
+
* Le langage Python est placé sous une licence libre proche de la licence BSD et fonctionne sur la plupart des plates-formes informatiques, des supercalculateurs aux ordinateurs centraux, de Windows à Unix avec notamment GNU/Linux en passant par macOS, ou encore Android, iOS, et aussi avec Java ou encore .NET. Il est conçu pour optimiser la productivité des programmeurs en offrant des outils de haut niveau et une syntaxe simple à utiliser.
*Le langage Python est placé sous une licence libre proche de la licence BSD et fonctionne sur la plupart des plates-formes informatiques, des supercalculateurs aux ordinateurs centraux, de Windows à Unix avec notamment GNU/Linux en passant par macOS, ou encore Android, iOS, et aussi avec Java ou encore .NET. Il est conçu pour optimiser la productivité des programmeurs en offrant des outils de haut niveau et une syntaxe simple à utiliser.
+
{{@}} '''Caractéristiques'''
 +
Les principales caractéristiques du langage Python et de ses deux implantations actuelles:
 +
* Python est un langage de haut niveau, dont la traduction en codes binaires est complexe et prend donc toujours un certain temps. Cela pourrait paraître un inconvénient. En fait, les avantages que présentent les langages de haut niveau sont énormes : il est beaucoup plus facile d'écrire un programme dans un langage de haut niveau; l'écriture du programme prend donc beaucoup moins de temps ; la probabilité d'y faire des fautes est nettement plus faible ; la maintenance (c'est-à-dire l'apport de modifications ultérieures) et la recherche des erreurs (les « bugs ») sont grandement facilitées. De plus, un programme écrit dans un langage de haut niveau sera souvent portable, c'est-à-dire que l'on pourra le faire fonctionner sans guère de modifications sur des machines ou des systèmes d'exploitation différents. Un programme écrit dans un langage de bas niveau ne peut jamais fonctionner que sur un seul type de machine : pour qu'une autre l'accepte, il faut le réécrire entièrement.
 +
* Python est portable, c'est à dire qu'il peut fonctionner sous différents systèmes d'exploitation, non seulement sur les différentes variantes d'UNiX, mais aussi sur les OS propriétaires: MacOS, BeOS, NeXTStep, M$-DOS et les différentes variantes de Window. Un nouveau compilateur, baptisé JPython, est écrit en Java et génère du bytecode Java.
 +
* Python est gratuit, mais on peut l'utiliser sans restriction dans des projets commerciaux.
 +
* Python convient aussi bien à des scripts d'une dizaine de lignes qu'à des projets complexes de plusieurs dizaines de milliers de lignes.
 +
* La syntaxe de Python est très simple et, combinée à des types de données évolués (listes, dictionnaires,...), conduit à des programmes à la fois très compacts et très lisibles. A fonctionnalités égales, un programme Python (abondament commenté et présenté selon les canons standards) est souvent de 3 à 5 fois plus court qu'un programme C ou C++ (ou même Java) équivalent, ce qui représente en général un temps de développement de 5 à 10 fois plus court et une facilité de maintenance largement accrue.
 +
* Python gère ses ressources (mémoire, descripteurs de fichiers...) sans intervention du programmeur, par un mécanisme de comptage de références (proche, mais différent, d'un garbage collector).
 +
* Il n'y a pas de pointeurs explicites en Python.
 +
* Python est (optionnellement) multi-threadé.
 +
* Python est orienté-objet. Il supporte l'héritage multiple et la surcharge des opérateurs. Dans son modèle objets, et en reprenant la terminologie de C++, toutes les méthodes sont virtuelle.
 +
* Python intègre, comme Java ou les versions récentes de C++, un système d'exceptions, qui permettent de simplifier considérablement la gestion des erreurs.
 +
* Python est dynamique (l'interpréteur peut évaluer des chaînes de caractères représentant des expressions ou des instructions Python), orthogonal (un petit nombre de concepts suffit à engendrer des constructions très riches), reflectif (il supporte la métaprogrammation, par exemple la capacité pour un objet de se rajouter ou de s'enlever des attributs ou des méthodes, ou même de changer de classe en cours d'exécution) et introspectif (un grand nombre d'outils de développement, comme le debugger ou le profiler, sont implantés en Python lui-même).
 +
* Comme Scheme ou SmallTalk, Python est dynamiquement typé. Tout objet manipulable par le programmeur possède un type bien définit à l'exécution, qui n'a pas besoin d'être déclaré à l'avance.
 +
* Python possède actuellement deux implémentations.
 +
:- L'une, interprétée, dans laquelle les programmes Python sont compilés en instructions portables, puis exécutés par une machine virtuelle (comme pour Java, avec une différence importante: Java étant statiquement typé, il est beaucoup plus facile d'accélérer l'exécution d'un programme Java que d'un programme Python).
 +
:- L'autre, génère directement du bytecode Java.
 +
* Python est extensible: comme Tcl ou Guile, on peut facilement l'interfacer avec des librairies C existantes. On peut aussi s'en servir comme d'un langage d'extension pour des systèmes logiciels complexes.
 +
* La librairie standard de Python, et les paquetages contribués, donnent accès à une grande variété de services: chaînes de caractères et expressions régulières, services UNIX standard (fichiers, pipes, signaux, sockets, threads...), protocoles Internet (Web, News, FTP, CGI, HTML...), persistence et bases de données, interfaces graphiques.
 +
* Python est un langage qui continue à évoluer, soutenu par une communauté d'utilisateurs enthousiastes et responsables, dont la plupart sont des supporters du logiciel libre. Parallèlement à l'interpréteur principal, écrit en C et maintenu par le créateur du langage, un deuxième interpréteur, écrit en Java, est en cours de développement.
 
<!-- ************************* Fin ***************************************** -->
 
<!-- ************************* Fin ***************************************** -->
}}
+
}}<!-- ******** Fin Fiche Didactique Définition ******************* -->
  
 
== {{Widget:Definition-graphique-Fiche}} ==
 
== {{Widget:Definition-graphique-Fiche}} ==
{{Fiche Didactique Media
 
<!-- ************************* Début *************************************** -->
 
<!-- Interface Média -->
 
<!-- Interface Média : Choisir le type de présentation de vos images        -->
 
<!-- Remplacer et adapter le mode, les images, formats et les Titres        -->
 
<!-- Compléter les pointillés et Supprimer les lignes non utilisées          -->
 
|Galerie Images= <!-- Ne pas Modifier  -->
 
<!-- ****************** Commercez les modifications ***********************  -->
 
<!-- Modes disponibles: traditional ou nolines ou packed ou packed-hover ou packed-overlay ou slideshow  -->
 
<gallery mode="packed-hover"> <!-- Vous pouvez remplacer et adapter le mode  -->
 
<!-- Remplacer et adapter image, format et Titre -->
 
  
 +
<!-- ************************* Début ****************************** -->
 +
{{Fiche Didactique Media <!------------------------------------------->
 +
<!-- Interface Média : Choisir le type de présentation de vos images-->
 +
<!--Remplacez et adaptez le mode, les images, formats et les Titres -->
 +
|Galerie Images= <!-- Ne pas Modifier--------------------------------->
 +
<!-- ************* Commercez les modifications *********************-->
 +
<!--Modes disponibles:"traditional"; "nolines"; "packed"; "packed-hover"; "packed-overlay" ou "slideshow"-->
 +
<!-- Vous pouvez remplacer et adapter le mode ICI =>--> <gallery mode="packed-hover">                             
 +
 +
<!-- Remplacez, Adaptez, Ajoutez ou Supprimez les images et lignes non utilisées-->
 
Image:python_logo.png|python_logo
 
Image:python_logo.png|python_logo
 
Image:Guido_van_Rossum.jpg|Guido_van_Rossum
 
Image:Guido_van_Rossum.jpg|Guido_van_Rossum
 
Image:Langage_python.png|Language_python
 
Image:Langage_python.png|Language_python
  
</gallery><!-- Ne pas Modifier  -->
 
<!-- ************************* Fin ***************************************** -->
 
 
<!-- *********************************************************************** -->
 
<!-- ************************* Début *************************************** -->
 
<!-- Ajouter une vidéo -->
 
<!-- Les balises a utiliser Pour: Youtube : <youtube> / Google : <gvideo> / Archive.org audio : <aoaudio> / Archive.org video : <aovideo> / WeGame : <wegame> / Tangler forum : <tangler> / Gametrailers: <gtrailer> / Nicovideo : <nicovideo> / GoGreenTube : <ggtube> -->
 
<!-- <youtube>ID-Video</youtube> exemple http://www.youtube.com/watch?v=k0O8-0kPQmM devient <youtube>k0O8-0kPQmM</youtube>  -->
 
<!-- Ajouter une ligne <youtube>ID-Video</youtube> pour chaque nouvelle Vidéo  -->
 
|Video=<!-- Ne pas Modifier  -->
 
<!-- Vous pouvez supprimer les lignes non utilisées        -->
 
<!-- ****************** Commercez les modifications ***********************  -->
 
  
 +
</gallery><!-- ************** Fin modification images***************************-->
 +
<!-- ************************* Début modification Vidéo ******************************************************************-->
 +
|Video=<!-- Ne pas Modifier  --><!-- Ajoutez une ou plusieurs vidéos-------------------------------------------------------->
 +
<!-- Balises à utiliser Pour: Youtube : <youtube> / Google : <gvideo> / Archive.org audio : <aoaudio> / Archive.org video: <aovideo>
 +
/ WeGame : <wegame> / Tangler forum : <tangler> / Gametrailers: <gtrailer> / Nicovideo : <nicovideo> / GoGreenTube : <ggtube> ----->
 +
<!-- <youtube>ID-Video</youtube> exemple http://www.youtube.com/watch?v=k0O8-0kPQmM devient <youtube>k0O8-0kPQmM</youtube> -->
 +
<!--Ajoutez ou supprimez les lignes non utilisées --------------------------------------------------------------------------->
 +
<!-- ****************** Commercez les modifications pour les Vidéos *******************************************************-->
 +
<youtube width="250" height="250">HWxBtxPBCAc</youtube>
 
<youtube width="250" height="250">Q63Tpbhnt1E</youtube>
 
<youtube width="250" height="250">Q63Tpbhnt1E</youtube>
 
<youtube width="250" height="250">I31DDwdm6HE</youtube>
 
<youtube width="250" height="250">I31DDwdm6HE</youtube>
 
<youtube width="250" height="250">LCdi_bIORjA</youtube>
 
<youtube width="250" height="250">LCdi_bIORjA</youtube>
 
<youtube width="250" height="250">2j9syL7B6Ac</youtube>
 
<youtube width="250" height="250">2j9syL7B6Ac</youtube>
<!-- ************************* Fin ***************************************** -->
+
 
}}
+
 
 +
 
 +
 
 +
}}<!-- ************************* Fin modifications pour les Médias *******************************************************-->
  
 
= {{Widget:Concepts-notions-associes-Fiche}} =
 
= {{Widget:Concepts-notions-associes-Fiche}} =
{{Fiche Didactique Concepts
 
<!-- ************************* Début *************************************** -->
 
<!-- Mettre au moins 5 Mots clés ou concepts (entre les crochets) en relation avec le concept principale  -->
 
|Mots Clés= <!-- Ne pas Modifier  -->
 
<!-- Ajouter une ligne /[[..........]] pour chaque nouveau Mot-Clé          -->
 
<!-- ****************** Commercez les modifications ***********************  -->
 
[[Entier]]
 
/ [[Réel]]
 
/ [[Caractère]]
 
/ [[Chaine]]
 
/ [[Tableau]]
 
  
<!-- ************************* Fin ***************************************** -->
+
<!-- ****************************************************************************-->
}}
+
{{Fiche Didactique Mots-clés<!--------- Début du script Mots-Clés ----------------->
 +
<!--Indiquez au minimum 5 Mots-Clés, les classer par ordre d'importance croissant-->
 +
<!--(du plus important au moins important), Première lettre en majuscule        -->
 +
<!--AJOUTEZ (jusqu'à 100 Mots-Clés) OU SUPPRIMEZ LES LIGNES NON UTILISÉES        -->
 +
<!----------------- Commencez les modifications des Mots Clés --------------------->
 +
 
 +
|Mot-Clé-1= Langage de programmation
 +
|Mot-Clé-2= Programmation interprété
 +
|Mot-Clé-3= Multi-paradigme
 +
|Mot-Clé-4= Multi-plateformes
 +
|Mot-Clé-5= Programmation impérative
 +
|Mot-Clé-6= Programmation impérative structurée
 +
|Mot-Clé-7= Programmation déclarative
 +
|Mot-Clé-8= Programmation fonctionnelle
 +
|Mot-Clé-9= Langages à classes
 +
|Mot-Clé-10=
 +
 
 +
 
 +
 
 +
}}<!-- ********************* FIN Fiche Didactique Mots-clés *******************-->
  
 
= {{Widget:Exemples-applications-utilisations-Fiche}} =
 
= {{Widget:Exemples-applications-utilisations-Fiche}} =
 
+
<!-- *************** Début Fiche Didactique Explicitations ***************** -->
{{Fiche Didactique Explicitations
+
{{Fiche Didactique Explicitations <!------------------------------------------->
<!-- ************************* Début *************************************** -->
 
 
<!-- Explicitations et Approfondissements à travers des exemples ou des applications ou lors d'utilisations -->
 
<!-- Explicitations et Approfondissements à travers des exemples ou des applications ou lors d'utilisations -->
|Exemples-Applications-Utilisations= <!-- Ne pas Modifier  -->
+
|Exemples-Applications-Utilisations= <!---------------------------------------->
 
<!-- Compléter les pointillés et Supprimer les lignes non utilisées          -->
 
<!-- Compléter les pointillés et Supprimer les lignes non utilisées          -->
 
<!-- ****************** Commercez les modifications ***********************  -->
 
<!-- ****************** Commercez les modifications ***********************  -->
 +
{{@}} '''Domaines d'application'''
 +
* Python se prête à un grand nombre de tâches. La distribution de base permet, entre autre, des développements réseau, la création d'interfaces graphiques (via tcl/tk), de la programmation cgi, de traiter du XML, etc... Sa relative facilité d'interfaçage avec des bibliothèques écrites en d'autres langages en fait un outil de choix pour des applications de calcul scientifique. Il est également de plus en plus utilisé comme langage de prototypage.
 +
* Python est aussi remarquable pour le nombre de bibliothèques accessibles via l'installation des modules appropriés. Que ce soit la connection avec une base de donnée, l'utilisation de bibliothèques d'interface graphique (wxPython, PyQt, pyGTK), la manipulation avancée de XML (pyXML), le traitement d'image (Python Imaging Library), le développement de jeu vidéo (pygame), OpenGL, la grande majorité des technologies actuelles dispose de son extension python.Il permet de créer toutes sortes de programmes, comme des jeux, des logiciels, des progiciels, etc.
 +
* Les domaines d'application naturels de Python incluent entre autres:
 +
:* L'apprentissage de la programmation objet.
 +
:* Les scripts d'administration système ou d'analyse de fichiers textuels.
 +
:* Tous les développement liés à l'Internet et en particulier au Web: scripts CGI, navigateurs Web, moteurs de recherche, agents intelligents, objets distribués...
 +
:* L'accès aux bases de données (relationnelles).
 +
:* La réalisation d'interfaces graphiques utilisateurs.
 +
:* Le calcul scientifique et l'imagerie. Python ne sert alors pas à écrire les algorithmes, mais à combiner et mettre en oeuvre rapidement des librairies de calcul écrites en langage compilé (C, C++, Fortran, Ada,...).
 +
:* Le prototypage rapide d'applications. L'idée générale est de commencer par écrire une application en Python, de la tester (ou de la faire tester par le client pour d'éventuelles modifications du cahier des charges). Trois cas peuvent alors se présenter:
 +
:- Les performances sont satisfaisantes, après optimisation éventuelle du code Python. On livre alors le produit tel quel au client.
 +
:- Les performances ne sont pas satifaisantes, mais l'analyse de l'exécution du programme (à l'aide du profiler de Python) montre que l'essentiel du temps d'exécution se passe dans une petite partie du programme. Les fonctions, ou les types de données, correspondants sont alors réécrits en C ou en C++, sans modification du reste du programme.
 +
:- Sinon, il est toujours possible de réécrire tout le programme, en utilisant la version Python comme un brouillon.
 +
 +
Même dans le pire des trois cas, il est très vraisemblable que le temps de développement aura été sensiblement plus court que si le programme avait été développé directement en C ou en C++.
 +
 +
{{@}} '''Environnement et installation'''
 +
* Prérequis :
 +
* '''Installation et Utilitaires'''
 +
:- [[Python - Éditeurs et IDEs]]
 +
:- [[Python - Installation]]
 +
  
*Python se prête à un grand nombre de tâches. La distribution de base permet, entre autre, des développements réseau, la création d'interfaces graphiques (via tcl/tk), de la programmation cgi, de traiter du XML, etc... Sa relative facilité d'interfaçage avec des bibliothèques écrites en d'autres langages en fait un outil de choix pour des applications de calcul scientifique. Il est également de plus en plus utilisé comme langage de prototypage.
+
{{@}} '''[[Programmation: Mots-clés | Mots-clés du langage]]'''
*Python est aussi remarquable pour le nombre de bibliothèques accessibles via l'installation des modules appropriés. Que ce soit la connection avec une base de donnée, l'utilisation de bibliothèques d'interface graphique (wxPython, PyQt, pyGTK), la manipulation avancée de XML (pyXML), le traitement d'image (Python Imaging Library), le développement de jeu vidéo (pygame), OpenGL, la grande majorité des technologies actuelles dispose de son extension python.
+
: Les mots-clés sont fournis dans la liste <code>keyword.kwlist</code> du module <code>keyword</code>. Les mots-clés de Python 2.7.5 sont les suivants :<code>and</code>, <code>as</code>, <code>assert</code>, <code>break</code>, <code>class</code>, <code>continue</code>, <code>def</code>, <code>del</code>, <code>elif</code>, <code>else</code>, <code>except</code>, <code>exec</code>, <code>finally</code>, <code>for</code>, <code>from</code>, <code>global</code>, <code>if</code>, <code>import</code>, <code>in</code>, <code>is</code>, <code>lambda</code>, <code>not</code>, <code>or</code>, <code>pass</code>, <code>print</code>, <code>raise</code>, <code>return</code>, <code>try</code>, <code>while</code>, <code>with</code>, <code>yield</code>.
*
+
 
<!-- ************************* Fin ***************************************** -->
+
: À partir de Python 3.0 : <code>print</code> et <code>exec</code> ne sont plus des mots-clés du langage, mais des fonctions du module <code>builtins</code><ref>[http://docs.python.org/3/library/functions.html#built-in-funcs The Python Standard Library - 2. Built-in Functions]</ref>. Sont ajoutés aux mots-clés : <code>True</code>, <code>False</code>, <code>None</code> et <code>nonlocal</code>.  
}}
+
Les trois premiers étaient déjà présents dans les versions précédentes, mais ils ne sont plus modifiables (auparavant, l'affectation <code>True = 1</code> était possible). <code>nonlocal</code> a été introduit par le PEP 3104, et permet, dans une fonction définie à l'intérieur d'une autre fonction, de modifier une variable d'un niveau supérieur de [[Portée (informatique)|portée]]. Avant cela, seules les variables locales à la fonction, et globales (niveau module) étaient modifiables. Toutefois, il était possible, et ça l'est toujours sans le mot-clé <code>nonlocal</code>, de modifier un objet affecté à une variable d'un niveau de portée supérieur, par exemple une liste avec la méthode <code>append</code> - c'est évidemment impossible pour un [[objet immuable]].
 +
 
 +
{{@}} '''Python pas à pas''' :
 +
* Quoi Faire ?
 +
* Pourquoi Faire ?
 +
* Comment Faire ?
 +
}}<!--************** Fin Fiche Didactique Explicitations ******************* -->
  
 
= {{Widget:Erreurs-confusions-Fiche}} =
 
= {{Widget:Erreurs-confusions-Fiche}} =
{{Fiche Didactique Conceptions
+
 
<!-- ************************* Début *************************************** -->
+
 
 +
<!-- ************** Début Fiche Didactique Conceptions ********************* -->
 +
{{Fiche Didactique Conceptions <!---------------------------------------------->
 
<!-- Spécification des éventuelles Difficultés ou Confusions ou Erreurs ou Conceptions erronées -->
 
<!-- Spécification des éventuelles Difficultés ou Confusions ou Erreurs ou Conceptions erronées -->
|Difficultés-Confusions-Erreurs-Conceptions= <!-- Ne pas Modifier  -->
+
|Difficultés-Confusions-Erreurs-Conceptions= <!-------------------------------->
<!-- Compléter les pointillés et Supprimer les lignes non utilisées         -->
+
<!-- Compléter les pointillés et Supprimer les lignes non utilisées------------>
<!-- ****************** Commercez les modifications *********************** -->
+
<!-- ****************** Commercez les modifications *************************-->
 +
{{@}} '''Confusion entre'''
 +
* [[Langage - Programme]]
 +
* [[Langage machine - Langage de programmation]]
 +
* [[Langage de programmation interprété - Langage de programmation compilé]]
 +
* [[Head - Body]]
  
* Confusion entre Language et Programme
+
}}<!-- ************** Fin Fiche Didactique Conceptions ********************* -->
* Erreur fréquente: Python n'est pas C++
 
  
<!-- ************************* Fin ***************************************** -->
+
= {{Widget:Questions-possibles-Fiche}} =
}}
 
  
= {{Widget:Questions-possibles-Fiche}} =
+
<!-- ********** Début Fiche Didactique Questions ******************-->
{{Fiche Didactique Questions
+
{{Fiche Didactique Questions <!-------------------------------------->
<!-- *********************************************************************** -->
 
<!-- ************************* Début *************************************** -->
 
 
<!-- Espace de Questions sur la thématique ou le concept -->
 
<!-- Espace de Questions sur la thématique ou le concept -->
|Questions Possibles= <!-- Ne pas Modifier  -->
+
|Questions Possibles= <!--------------------------------------------->
<!-- Compléter les pointillés et Supprimer les lignes non utilisées         -->
+
<!-- Compléter les pointillés et Supprimer les lignes non utilisées-->
<!-- ****************** Commercez les modifications *********************** -->
+
<!-- ************ Commercez les modifications *********************-->
 +
{{@}} '''[[{{FULLPAGENAME}} : Questions - Réponses|{{FULLPAGENAME}} : Regroupement de questions]]'''
 +
* [[Qu’est-ce que Python? Quels sont les avantages d’utiliser Python?]]
 +
* [[Quel type de langage est Python? Programmation ou script?]]
 +
* [[Quelles sont les différences entre Python 2.x et Python 3.x?]]
 +
* [[À quoi sert la variable d'environnement PYTHONPATH?]]
 +
* [[Est ce qu'on peut gérer une BD avec Python ?]]
 +
* [[Pourquoi Python est un langage interprété?]]
 +
* [[Python est-elle sensible à la casse ?]]
 +
* [[ L’indentation est-elle nécessaire en python ?]]
 +
* [[Quelle est la différence entre les tuples et les listes en Python?]]
 +
* [[Qu'est ce que la notion de dictionnaires Python?]]
 +
* [[Comment convertir un objet en chaîne en python?]]
 +
* [[Comment convertir une chaîne en liste en python?]]
 +
* [[Comment récupérer un élément aléatoire dans une liste ou un tuple?]]
 +
* [[Comment avoir un nombre aléatoire en Python?]]
 +
* [[A quoi sert le décorateur en Python?]]
 +
* [[Quels sont les outils que python utilise pour trouver les bugs?]]
 +
 
 +
 
  
* Est ce qu'on peut gérer une BD avec Python ?
 
* Quelles sont les différences entre Python et C++ ?                                                                                               
 
  
<!-- ************************* Fin ***************************************** -->
+
}}<!-- ******** Fin Fiche Didactique Questions ******************* -->
}}
 
  
 
= {{Widget:Liens-enseignement-Fiche}} =
 
= {{Widget:Liens-enseignement-Fiche}} =
== Education: Liens, sites et portails ==
+
 
{{Fiche Didactique Liens Education
+
== {{Widget:Idées ou Réflexions liées à son enseignement-Fiche}} ==
<!-- ************************* Début *************************************** -->
+
 
 +
 
 +
<!-- ************** Début Fiche Didactique Idées-Enseignement ******************-->
 +
{{Fiche Didactique Idées-Enseignement <!------------------------------------------>
 +
<!-- Espace de réflexions et d'idées pour l'Enseignement lié à cette thématique -->
 +
|Idées-Enseignement= <!-- ----------------------------------------------------  -->
 +
<!-- Complétez les pointillés et Supprimez les lignes non utilisées          ----->
 +
<!-- ****************** Commercez les modifications **************************  -->
 +
 
 +
* Jeu sérieux aidant à enseigner les concepts algorithmiques (Boucles, conditions, Fonctions, Turtle)                                               
 +
:* BlocklyGames [https://blockly.games/ ''https://blockly.games'']
 +
                                               
 +
 
 +
}}<!-- ************************* Fin Idées-Enseignement ********************** -->
 +
===Types de jeux offerts par  BlocklyGames===
 +
<div style="color:#000000;">[https://fr.wikipedia.org/wiki/Python_(langage)#cite_note-1 ]</div>
 +
 
 +
 
 +
{| style="border-spacing:0;width:17cm;"
 +
|- style="border:none;padding:0cm;"
 +
|| [[Image:puzzleBlockly.png|top]]
 +
|| Introduction rapide aux notions de bloc et de travail collaboratif.
 +
|- style="border:none;padding:0cm;"
 +
|| [[Image:mazeBlockly.png|top]]
 +
|| Maze introduction aux boucles et conditions où chaque stage représente un défi plus difficile.
 +
|- style="border:none;padding:0cm;"
 +
|| [[Image:birdBlockly.png|top]]
 +
|| Bird est utilisé pour le contrôle de code avec des structures conditionnelles complexes.
 +
|- style="border:none;padding:0cm;"
 +
|| [[Image:turtleBlockly.png|top]]
 +
|| Turtle développe les notions de boucles avec des résultats graphiques dessiné sur l'écran.
 +
|- style="border:none;padding:0cm;"
 +
|| [[Image:movieBlockly.png|top]]
 +
|| Movie introduction aux équations mathématiques avec des vidéo mathématiquement animées.
 +
|- style="border:none;padding:0cm;"
 +
|| [[Image:musicBlockly.png|top]]
 +
|| Music est une introduction aux fonctions; on peut développer de la musique à l'aide de fonctions.
 +
|- style="border:none;padding:0cm;"
 +
|| [[Image:pond-tutorBlockly.png|top]]
 +
|| Pond pour introduire la programmation textuelles
 +
|- style="border:none;padding:0cm;"
 +
|| [[Image:pond-duckBlockly.png|top]]
 +
|| Pond pour construire des savoirs bien avancé dans la programmation gtextuelle.
 +
|-
 +
|}
 +
<div style="color:#000000;"></div>
 +
 
 +
== {{Widget:Aides et astuces-Fiche}} ==
 +
 
 +
<!-- ************** Début Fiche Didactique Astuces-Enseignement ****************-->
 +
{{Fiche Didactique Astuces-Enseignement <!---------------------------------------->
 +
<!-- Espace d'astuces et d'aides pour l'Enseignement lié à cette thématique    -->
 +
|Astuces-Enseignement= <!--------------------------------------------------------->
 +
<!-- Complétez les pointillés et Supprimez les lignes non utilisées          ----->
 +
<!-- ****************** Commercez les modifications **************************  -->
 +
 
 +
{{@}} '''Tutoriel'''
 +
* [[Tutoriel-Python.org]]                                             
 +
{{@}} '''Environnement en ligne'''
 +
* https://repl.it/languages/python3                                               
 +
                                               
 +
 
 +
}}<!-- ************************* Fin Astuces-Enseignement ********************** -->
 +
 
 +
== {{Widget:Education: Liens, sites et portails-Fiche}} ==
 +
 
 +
<!-- ********* Début Liens Education ***************************-->
 +
{{Fiche Didactique Liens Education <!----------------------------->
 
<!-- Espace pour les références Liens internet ou Bibliographie -->
 
<!-- Espace pour les références Liens internet ou Bibliographie -->
|Références= <!-- Ne pas Modifier  -->
+
|Références=<!-- Complétez ou Supprimez les lignes non utilisées-->
<!-- Compléter les pointillés et Supprimer les lignes non utilisées         -->
+
<!-- ****************** Commercez les modifications ************-->
<!-- ****************** Commercez les modifications ***********************  -->                                            
 
  
* '''URL''' :
 
 
:* https://www.python.org
 
:* https://www.python.org
 
:* http://pythonprogramminglanguage.com/
 
:* http://pythonprogramminglanguage.com/
 +
:* [http://www.greenteapress.com/thinkpython/html/index.html Think Python: How to Think Like a Computer Scientist]
  
<!-- ************************* Fin ***************************************** -->
+
}}<!-- ************ Fin Liens Education ********************** -->
}}
+
 
 +
= {{Widget:Bibliographie-Fiche}} =
 +
 
 +
 
 +
<!-- ************** Début Fiche Didactique Astuces-Enseignement *********-->
 +
{{Fiche Didactique Bibliographie <!---------------------------------------->
 +
<!-- Espace bibliographique pour l'Enseignement lié à cette thématique  -->
 +
|Bibliographie= <!--------------------------------------------------------->
 +
<!-- Complétez les pointillés et Supprimez les lignes non utilisées  ----->
 +
<!-- ****************** Commercez les modifications *********************-->
 +
 
 +
* https://python.doctor                                               
 +
* ..................
 +
* ..................                                               
 +
* ..................                                               
  
== Difficultés liées à son enseignement ==
+
}}<!-- ************* Fin Fiche Didactique Bibliographie *************** -->
* ............
 
* ............
 
* ............
 
  
== Aides et astuces ==
+
{{Widget:Fiche-Conceptuelle-Bas}}
* ............
 
* ............
 
* ............
 
  
= {{Widget:Bibliographie-Fiche}} =
 
*
 
*
 
*
 
  
[[Category:{{urlencode:{{FULLPAGENAME}}}}]]
+
[[Category:Promotion EIAH 2020]]
[[Category:Fiches didactiques]]
 

Version actuelle datée du 20 décembre 2021 à 17:16


Autres Fiches Conceptuelles
Posez une Question


(+)

Target Icon.pngVotre Publicité sur le Réseau Target Icon.png

Puce-didaquest.png Traduction


More-didaquest.png Traductions


Puce-didaquest.png Définition

Domaine, Discipline, Thématique


More-didaquest.png Justification


Définition écrite


  • Python est développé depuis 1989 par Guido van Rossum et de nombreux contributeurs bénévoles.
  • Python favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et d'un système de gestion d'exceptions ; il est ainsi similaire à Perl, Ruby, Scheme, Smalltalk et Tcl.
  • Le langage Python est placé sous une licence libre proche de la licence BSD et fonctionne sur la plupart des plates-formes informatiques, des supercalculateurs aux ordinateurs centraux, de Windows à Unix avec notamment GNU/Linux en passant par macOS, ou encore Android, iOS, et aussi avec Java ou encore .NET. Il est conçu pour optimiser la productivité des programmeurs en offrant des outils de haut niveau et une syntaxe simple à utiliser.


Blue-circle-target.png Caractéristiques Les principales caractéristiques du langage Python et de ses deux implantations actuelles:

  • Python est un langage de haut niveau, dont la traduction en codes binaires est complexe et prend donc toujours un certain temps. Cela pourrait paraître un inconvénient. En fait, les avantages que présentent les langages de haut niveau sont énormes : il est beaucoup plus facile d'écrire un programme dans un langage de haut niveau; l'écriture du programme prend donc beaucoup moins de temps ; la probabilité d'y faire des fautes est nettement plus faible ; la maintenance (c'est-à-dire l'apport de modifications ultérieures) et la recherche des erreurs (les « bugs ») sont grandement facilitées. De plus, un programme écrit dans un langage de haut niveau sera souvent portable, c'est-à-dire que l'on pourra le faire fonctionner sans guère de modifications sur des machines ou des systèmes d'exploitation différents. Un programme écrit dans un langage de bas niveau ne peut jamais fonctionner que sur un seul type de machine : pour qu'une autre l'accepte, il faut le réécrire entièrement.
  • Python est portable, c'est à dire qu'il peut fonctionner sous différents systèmes d'exploitation, non seulement sur les différentes variantes d'UNiX, mais aussi sur les OS propriétaires: MacOS, BeOS, NeXTStep, M$-DOS et les différentes variantes de Window. Un nouveau compilateur, baptisé JPython, est écrit en Java et génère du bytecode Java.
  • Python est gratuit, mais on peut l'utiliser sans restriction dans des projets commerciaux.
  • Python convient aussi bien à des scripts d'une dizaine de lignes qu'à des projets complexes de plusieurs dizaines de milliers de lignes.
  • La syntaxe de Python est très simple et, combinée à des types de données évolués (listes, dictionnaires,...), conduit à des programmes à la fois très compacts et très lisibles. A fonctionnalités égales, un programme Python (abondament commenté et présenté selon les canons standards) est souvent de 3 à 5 fois plus court qu'un programme C ou C++ (ou même Java) équivalent, ce qui représente en général un temps de développement de 5 à 10 fois plus court et une facilité de maintenance largement accrue.
  • Python gère ses ressources (mémoire, descripteurs de fichiers...) sans intervention du programmeur, par un mécanisme de comptage de références (proche, mais différent, d'un garbage collector).
  • Il n'y a pas de pointeurs explicites en Python.
  • Python est (optionnellement) multi-threadé.
  • Python est orienté-objet. Il supporte l'héritage multiple et la surcharge des opérateurs. Dans son modèle objets, et en reprenant la terminologie de C++, toutes les méthodes sont virtuelle.
  • Python intègre, comme Java ou les versions récentes de C++, un système d'exceptions, qui permettent de simplifier considérablement la gestion des erreurs.
  • Python est dynamique (l'interpréteur peut évaluer des chaînes de caractères représentant des expressions ou des instructions Python), orthogonal (un petit nombre de concepts suffit à engendrer des constructions très riches), reflectif (il supporte la métaprogrammation, par exemple la capacité pour un objet de se rajouter ou de s'enlever des attributs ou des méthodes, ou même de changer de classe en cours d'exécution) et introspectif (un grand nombre d'outils de développement, comme le debugger ou le profiler, sont implantés en Python lui-même).
  • Comme Scheme ou SmallTalk, Python est dynamiquement typé. Tout objet manipulable par le programmeur possède un type bien définit à l'exécution, qui n'a pas besoin d'être déclaré à l'avance.
  • Python possède actuellement deux implémentations.
- L'une, interprétée, dans laquelle les programmes Python sont compilés en instructions portables, puis exécutés par une machine virtuelle (comme pour Java, avec une différence importante: Java étant statiquement typé, il est beaucoup plus facile d'accélérer l'exécution d'un programme Java que d'un programme Python).
- L'autre, génère directement du bytecode Java.
  • Python est extensible: comme Tcl ou Guile, on peut facilement l'interfacer avec des librairies C existantes. On peut aussi s'en servir comme d'un langage d'extension pour des systèmes logiciels complexes.
  • La librairie standard de Python, et les paquetages contribués, donnent accès à une grande variété de services: chaînes de caractères et expressions régulières, services UNIX standard (fichiers, pipes, signaux, sockets, threads...), protocoles Internet (Web, News, FTP, CGI, HTML...), persistence et bases de données, interfaces graphiques.
  • Python est un langage qui continue à évoluer, soutenu par une communauté d'utilisateurs enthousiastes et responsables, dont la plupart sont des supporters du logiciel libre. Parallèlement à l'interpréteur principal, écrit en C et maintenu par le créateur du langage, un deuxième interpréteur, écrit en Java, est en cours de développement.

More-didaquest.png Python - Historique (+)


Définition graphique




Puce-didaquest.png Concepts ou notions associés


More-didaquest.png Python - Glossaire / (+)



Puce-didaquest.png Exemples, applications, utilisations


Blue-circle-target.png Domaines d'application

  • Python se prête à un grand nombre de tâches. La distribution de base permet, entre autre, des développements réseau, la création d'interfaces graphiques (via tcl/tk), de la programmation cgi, de traiter du XML, etc... Sa relative facilité d'interfaçage avec des bibliothèques écrites en d'autres langages en fait un outil de choix pour des applications de calcul scientifique. Il est également de plus en plus utilisé comme langage de prototypage.
  • Python est aussi remarquable pour le nombre de bibliothèques accessibles via l'installation des modules appropriés. Que ce soit la connection avec une base de donnée, l'utilisation de bibliothèques d'interface graphique (wxPython, PyQt, pyGTK), la manipulation avancée de XML (pyXML), le traitement d'image (Python Imaging Library), le développement de jeu vidéo (pygame), OpenGL, la grande majorité des technologies actuelles dispose de son extension python.Il permet de créer toutes sortes de programmes, comme des jeux, des logiciels, des progiciels, etc.
  • Les domaines d'application naturels de Python incluent entre autres:
  • L'apprentissage de la programmation objet.
  • Les scripts d'administration système ou d'analyse de fichiers textuels.
  • Tous les développement liés à l'Internet et en particulier au Web: scripts CGI, navigateurs Web, moteurs de recherche, agents intelligents, objets distribués...
  • L'accès aux bases de données (relationnelles).
  • La réalisation d'interfaces graphiques utilisateurs.
  • Le calcul scientifique et l'imagerie. Python ne sert alors pas à écrire les algorithmes, mais à combiner et mettre en oeuvre rapidement des librairies de calcul écrites en langage compilé (C, C++, Fortran, Ada,...).
  • Le prototypage rapide d'applications. L'idée générale est de commencer par écrire une application en Python, de la tester (ou de la faire tester par le client pour d'éventuelles modifications du cahier des charges). Trois cas peuvent alors se présenter:
- Les performances sont satisfaisantes, après optimisation éventuelle du code Python. On livre alors le produit tel quel au client.
- Les performances ne sont pas satifaisantes, mais l'analyse de l'exécution du programme (à l'aide du profiler de Python) montre que l'essentiel du temps d'exécution se passe dans une petite partie du programme. Les fonctions, ou les types de données, correspondants sont alors réécrits en C ou en C++, sans modification du reste du programme.
- Sinon, il est toujours possible de réécrire tout le programme, en utilisant la version Python comme un brouillon.

Même dans le pire des trois cas, il est très vraisemblable que le temps de développement aura été sensiblement plus court que si le programme avait été développé directement en C ou en C++.


Blue-circle-target.png Environnement et installation

  • Prérequis :
  • Installation et Utilitaires
- Python - Éditeurs et IDEs
- Python - Installation



Blue-circle-target.png Mots-clés du langage

Les mots-clés sont fournis dans la liste keyword.kwlist du module keyword. Les mots-clés de Python 2.7.5 sont les suivants :and, as, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, with, yield.
À partir de Python 3.0 : print et exec ne sont plus des mots-clés du langage, mais des fonctions du module builtins[1]. Sont ajoutés aux mots-clés : True, False, None et nonlocal.

Les trois premiers étaient déjà présents dans les versions précédentes, mais ils ne sont plus modifiables (auparavant, l'affectation True = 1 était possible). nonlocal a été introduit par le PEP 3104, et permet, dans une fonction définie à l'intérieur d'une autre fonction, de modifier une variable d'un niveau supérieur de portée. Avant cela, seules les variables locales à la fonction, et globales (niveau module) étaient modifiables. Toutefois, il était possible, et ça l'est toujours sans le mot-clé nonlocal, de modifier un objet affecté à une variable d'un niveau de portée supérieur, par exemple une liste avec la méthode append - c'est évidemment impossible pour un objet immuable.


Blue-circle-target.png Python pas à pas :

  • Quoi Faire ?
  • Pourquoi Faire ?
  • Comment Faire ?

(+)


Puce-didaquest.png Erreurs ou confusions éventuelles



Puce-didaquest.png Questions possibles



Puce-didaquest.png Liaisons enseignements et programmes

Idées ou Réflexions liées à son enseignement


Types de jeux offerts par BlocklyGames


PuzzleBlockly.png Introduction rapide aux notions de bloc et de travail collaboratif.
MazeBlockly.png Maze introduction aux boucles et conditions où chaque stage représente un défi plus difficile.
BirdBlockly.png Bird est utilisé pour le contrôle de code avec des structures conditionnelles complexes.
TurtleBlockly.png Turtle développe les notions de boucles avec des résultats graphiques dessiné sur l'écran.
MovieBlockly.png Movie introduction aux équations mathématiques avec des vidéo mathématiquement animées.
MusicBlockly.png Music est une introduction aux fonctions; on peut développer de la musique à l'aide de fonctions.
Pond-tutorBlockly.png Pond pour introduire la programmation textuelles
Pond-duckBlockly.png Pond pour construire des savoirs bien avancé dans la programmation gtextuelle.

Aides et astuces



Education: Autres liens, sites ou portails




Puce-didaquest.png Bibliographie