Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
dev:python:start [2018/05/04 06:58] – yoann | dev:python:start [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
{{tag> | {{tag> | ||
- | ====== Python ====== | + | ====== Python: introduction |
Quelques notes à propos des spécificités du langage Python basées sur mes écueils. | Quelques notes à propos des spécificités du langage Python basées sur mes écueils. | ||
- | ===== Interpréteurs ===== | + | Python a été conçu avec l' |
- | **ipython** est interpréteur proposant des couleurs | + | Langage portable avec une grosse base de code: calcul scientifique, |
+ | |||
+ | Python permet de devélopper/ | ||
+ | * types de base puissants (listes, dictionnaires, | ||
+ | * gestion automatique de la mémoire | ||
+ | * langage interprété et EDI divers (notebooks IDLE etc) | ||
+ | |||
+ | ===== Droits et licences ===== | ||
+ | |||
+ | Python appartient a la PSF (Python Software Fondation) qui est une organisation à but non lucratif. La licence est permissive et permet de l' | ||
+ | |||
+ | ===== Évolution du langage ===== | ||
+ | |||
+ | Toute proposition concernant l' | ||
+ | |||
+ | ===== Bref historique ===== | ||
+ | |||
+ | Première version python 1.0 sortie en 1994. Version 2 en 2000. Grosse rupture de compatibilité entre la version 2 et la version 3. Langage stable et maintenu. | ||
+ | |||
+ | |||
+ | Librairie standard: ensemble des utilitaires packagés, distribués et maintenus avec Python. | ||
+ | |||
+ | ===== EDI et Interpréteurs ===== | ||
+ | |||
+ | IDLE (prononcer Aïdeul) est l'EDI proposé par la librairie standard mais il existe de nombreux EDI supportant python on pourra citer: PyCharm, | ||
+ | |||
+ | **ipython** est interpréteur proposant des couleurs, de l' | ||
<code bash> | <code bash> | ||
$ sudo apt-get install ipython | $ sudo apt-get install ipython | ||
+ | |||
+ | # ou sous les versions plus récentes de Debian/ | ||
+ | $ sudo apt-get install ipython3 | ||
</ | </ | ||
+ | |||
+ | Pour plus de détails concernant l' | ||
===== Jeux de caractères ===== | ===== Jeux de caractères ===== | ||
Ligne 36: | Ligne 67: | ||
./ | ./ | ||
</ | </ | ||
+ | ===== Variables ===== | ||
+ | |||
+ | Une variable référence un objet. Python gère deux espaces: | ||
+ | * l' | ||
+ | * l' | ||
+ | |||
+ | Lors d'une déclaration telle que: | ||
+ | <code python> | ||
+ | >>> | ||
+ | </ | ||
+ | |||
+ | 3 étapes: | ||
+ | * L' | ||
+ | * Création de la variable " | ||
+ | * La référence vers l' | ||
+ | |||
+ | **La valeur de toute variable est une référence à un objet**. Le typage est dynamique mais le langage est fortement typé. En python le type n'est pas lié à la variable qui référence l' | ||
+ | |||
+ | En python les noms des variables ne peuvent pas commencer par un chiffre. Le nom se compose des caractères alphanumériques sans caractères spéciaux. Les noms sont sensibles à la casse de caractère. | ||
+ | |||
+ | < | ||
+ | Prendre l' | ||
+ | </ | ||
+ | |||
+ | Par convention les variables sont en minuscules. Par convention également les variables " | ||
+ | |||
+ | Dans tous les cas il est fortement déconseillé d' | ||
===== Types de base ===== | ===== Types de base ===== | ||
- | En Python tout est objet, le type d'une variable est déterminé dynamiquement, | + | En Python tout est objet. Le type d'une variable est déterminé dynamiquement, |
+ | Le type est important puisqu' | ||
+ | |||
+ | ^ Type ^ Mutablilité | | ||
+ | | int, float | immuable | ||
+ | | complex, | ||
+ | | str | immuable | ||
+ | | list | mutable | ||
+ | | dict | mutable | ||
+ | | set | mutable | ||
+ | | frozenset | ||
+ | |||
+ | Un objet mutable peut être modifié en place. Un objet immuable ne peut être modifié, python doit réallouer un espace mémoire différent et mettre à jour la référence. | ||
<code python> | <code python> | ||
Ligne 64: | Ligne 134: | ||
Remarques: | Remarques: | ||
- | - La fonction **type()** retourne le type de la variable passée en paramètre. | + | - La fonction **type()** retourne le type de l' |
- Python ne distingue pas caractère et chaîne de caractères, | - Python ne distingue pas caractère et chaîne de caractères, | ||
+ | |||
+ | La fonction **isinstance()** est plus largement utilisée pour la mise en œuvre des mécanismes d' | ||
+ | |||
+ | De plus comme python est un langage à typage dynamique, isinstance() permet de s' | ||
+ | |||
+ | < | ||
+ | Depuis python 3.5 les **Type hints** ou annotations de types permettent d' | ||
+ | </ | ||
==== La liste ==== | ==== La liste ==== | ||
- | Une liste est un ensemble ordonné d' | + | Une liste est un ensemble |
<code python> | <code python> | ||
Ligne 85: | Ligne 163: | ||
[' | [' | ||
</ | </ | ||
+ | |||
+ | Notes plus détaillées à propos des [[dev: | ||
==== Le tuple ==== | ==== Le tuple ==== | ||
- | Le tuple est un ensemble ordonné et figé d' | + | Le tuple est un objet séquence très proche de la liste, sa principale différence est d' |
<code python> | <code python> | ||
Ligne 109: | Ligne 189: | ||
TypeError: ' | TypeError: ' | ||
</ | </ | ||
+ | |||
+ | < | ||
+ | Chaines, listes et tuples sont des **séquences**, | ||
+ | </ | ||
==== Slicing ==== | ==== Slicing ==== | ||
- | Le slicing permet de sélectionner un sous ensemble | + | Le slicing permet de sélectionner un sous ensemble |
- | - le premier élément | + | - l' |
- | - le dernier élément+1 | + | - l' |
- le pas | - le pas | ||
Ligne 134: | Ligne 218: | ||
>>> | >>> | ||
etxet iloj nu | etxet iloj nu | ||
- | |||
- | |||
</ | </ | ||
+ | |||
+ | Notes plus détaillées à propos des [[dev: | ||
==== Le dictionnaire ==== | ==== Le dictionnaire ==== | ||
- | Un dictionnaire est un ensemble dynamique non ordonné (on parle aussi de tableau associatif). On accède aux élément via la clé. Une clé peut être une chaîne de caractères ou un nombre. | + | Un dictionnaire est un ensemble dynamique non ordonné (on parle aussi de tableau associatif). On accède aux élément via la clé. |
<code python> | <code python> | ||
Ligne 148: | Ligne 232: | ||
Remarque: Pour copier un dictionnaire utiliser la méthode **copy()** | Remarque: Pour copier un dictionnaire utiliser la méthode **copy()** | ||
+ | |||
+ | Confère wiki [[dev: | ||
===== Définition d'un objet ===== | ===== Définition d'un objet ===== | ||
Ligne 195: | Ligne 281: | ||
* **eval()** pour évaluer une chaîne de caractères | * **eval()** pour évaluer une chaîne de caractères | ||
+ | <code python> | ||
+ | |||
+ | >>> | ||
+ | >>> | ||
+ | |||
+ | >>> | ||
+ | >>> | ||
+ | |||
+ | >>> | ||
+ | True | ||
+ | |||
+ | >>> | ||
+ | adresse c1: 7fc861d4b0b0 | ||
+ | |||
+ | >>> | ||
+ | adresse c2: 7fc861d4b0b0 | ||
+ | |||
+ | >>> | ||
+ | >>> | ||
+ | c1 += ' hello' | ||
+ | |||
+ | >>> | ||
+ | False | ||
+ | |||
+ | >>> | ||
+ | adresse c1: 7fc8535cf6b0 | ||
+ | </ | ||
===== Import et modules ===== | ===== Import et modules ===== | ||
Ligne 230: | Ligne 343: | ||
===== La documentation ===== | ===== La documentation ===== | ||
- | Python intègre nativement la documentation au code (attribut __doc__ d'une instance). Lors de la définition d'une classe ou d'une méthode, ajouter un texte entre triple guillemets sous la définition pour qu' | + | Python intègre nativement la documentation au code (c'est la documentation en ligne contenue dans l'attribut __doc__ d'une instance). Lors de la définition d'une classe ou d'une méthode, ajouter un texte entre triple guillemets sous la définition pour qu' |
Remarque: La position du commentaire est importante. Seuls les commentaires entre triples guillemets sous la déclaration seront exportés. Attention a bien indenter le commentaire. | Remarque: La position du commentaire est importante. Seuls les commentaires entre triples guillemets sous la déclaration seront exportés. Attention a bien indenter le commentaire. | ||
- | Pour obtenir de l' | + | Pour obtenir de l' |
<code python> | <code python> | ||
help(str) | help(str) | ||
+ | </ | ||
+ | |||
+ | La commande **dir()** permet de lister les symboles existants au sein d'un module: | ||
+ | <code python> | ||
+ | >>> | ||
+ | >>> | ||
+ | ' | ||
+ | >>> | ||
</ | </ | ||