Outils pour utilisateurs

Outils du site


dev:python:start

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
dev:python:start [2020/11/11 11:58] yoanndev:python:start [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1
Ligne 42: Ligne 42:
 </code> </code>
  
 +Pour plus de détails concernant l'installation voir le wiki [[dev:python:core:installer_interpreteurs]]. 
  
 ===== Jeux de caractères ===== ===== Jeux de caractères =====
Ligne 67: Ligne 67:
 ./monscript.py ./monscript.py
 </code> </code>
 +===== Variables =====
 +
 +Une variable référence un objet. Python gère deux espaces:
 +  * l'espace de nom
 +  * l'espace des objets
 +
 +Lors d'une déclaration telle que:
 +<code python>
 +>>> msg = 'Bonjour!'
 +</code>
 +
 +3 étapes:
 +  * L'objet de type str avec la valeur 'Bonjour!' est instancié dans l'espace des objets.
 +  * Création de la variable "msg" dans l'espace des variables.
 +  * La référence vers l'objet est associé à la variable "msg".
 +
 +**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'objet mais il est lié à l'objet. L'objet garde son type durant toute l’exécution du programme. La variable par contre peut référencer différents objets qui vont  
 +
 +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.
 +
 +<note>
 +Prendre l'habitude de nommer correctement ses variables avec des labels explicites. Python intègre un système de génération automatique de la documentation à partir du code.
 +</note>
 +
 +Par convention les variables sont en minuscules. Par convention également les variables "privées" sont préfixées par le caractère tiret bas '_' (confère PEP 008 http://legacy.python.org/dev/peps/pep-0008/#descriptive-naming-styles).
 +
 +Dans tous les cas il est fortement déconseillé d'utiliser le formalisme **%%__variable__%%** car utilisé par le langage.
  
 ===== Types de base ===== ===== Types de base =====
  
-En Python tout est objet, le type d'une variable est déterminé dynamiquement, pas de déclaration avant l'utilisation. La fonction **type()** renvoi le type de l'objet passé en paramètre:+En Python tout est objet. Le type d'une variable est déterminé dynamiquement, pas de déclaration de variable avant l'utilisation. La fonction **type()** renvoi le type de l'objet passé en paramètre: 
 +Le type est important puisqu'il détermine quelles méthodes peuvent être appelées, quel comportement peut avoir l'objet. Parmi les types de base (built-in types) ont distingue les types mutables et les types immuables: 
 + 
 +^ Type        ^ Mutablilité | 
 +| int, float   | immuable    |    
 +| complex,bool | immuable    | 
 +| str        | immuable    | 
 +| list        | mutable     | 
 +| dict        | mutable     | 
 +| set          | mutable     | 
 +| frozenset    | immuable    | 
 + 
 +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 95: 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'objet référencé par la variable passée en paramètre.
   - Python ne distingue pas caractère et chaîne de caractères, le type est 'str' (string).   - Python ne distingue pas caractère et chaîne de caractères, le type est 'str' (string).
 +
 +La fonction **isinstance()** est plus largement utilisée pour la mise en œuvre des mécanismes d'héritage. Elle permet de savoir si un objet est d'un type donné.
 +
 +De plus comme python est un langage à typage dynamique, isinstance() permet de s'assurer qu'une variable passée à une fonction à l’exécution est du type attendu, puisque contrairement à un langage typé statiquement, aucune garantie ne peut être apportée en amont.
 +
 +<note>
 +Depuis python 3.5 les **Type hints** ou annotations de types permettent d'expliciter les suppositions qui sont faites par le programmeur pour le bon fonctionnement de son code. Totalement optionnelles et meme si elles sont présentes elles ne sont pas utilisées à l'exécution par l'interpréteur. Cependant elles permettent a des outils externes comme mypy d'effectuer des contrôles poussés de correction de code.
 +</note>
  
 ==== La liste ==== ==== La liste ====
Ligne 117: Ligne 164:
 </code> </code>
  
-Notes plus détaillées à propos des [[dev:python:listes|listes en Python]].+Notes plus détaillées à propos des [[dev:python:core:listes|listes en Python]]. 
 ==== Le tuple ==== ==== Le tuple ====
  
-Le tuple est un ensemble ordonné et figé d'objets pouvant être de types différents. On ne peut pas ajouter/supprimer/modifier les éléments d'un tuple. Le principal avantage d'un tuple est le temps d’accès à l'information bien plus court que la liste.+Le tuple est un objet séquence très proche de la liste, sa principale différence est d'être immuable. Le tuple contient un ensemble ordonné et figé d'objets pouvant être de types différents. On ne peut pas ajouter/supprimer/modifier les éléments d'un tuple. Le principal avantage d'un tuple est le temps d’accès à l'information bien plus court que la liste.
  
 <code python> <code python>
Ligne 170: Ligne 218:
 >>> print(sous_chaine) >>> print(sous_chaine)
 etxet iloj nu etxet iloj nu
- 
- 
 </code> </code>
 +
 +Notes plus détaillées à propos des [[dev:python:core:tuples|tuples]].
  
 ==== 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 184: 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:python:core:type_dictionnaire|dictionnaires]] pour plus de détails.
  
 ===== Définition d'un objet ===== ===== Définition d'un objet =====
Ligne 231: Ligne 281:
   * **eval()** pour évaluer une chaîne de caractères   * **eval()** pour évaluer une chaîne de caractères
  
 +<code python>
 +
 +>>> # La variable c1 référence un objet str
 +>>> c1 = 'say'
 +
 +>>> # création d'une variable c2 référencant le meme objet
 +>>> c2 = c1
 +
 +>>> c2 is c1
 +True
 +
 +>>> print(f"adresse c1: {id(c1):0x}"                                                         
 +adresse c1: 7fc861d4b0b0
 +
 +>>> print(f"adresse c2: {id(c2):0x}"                                                         
 +adresse c2: 7fc861d4b0b0
 +
 +>>> # Comme un objet str est immuable la concaténation 
 +>>> # ci-dessous produit une nouvelle référence associée a c1
 +c1 += ' hello'
 +
 +>>> c2 is c1                                                                                   
 +False
 +
 +>>> print(f"adresse c1: {id(c1):0x}"                                                         
 +adresse c1: 7fc8535cf6b0
 +</code>
  
 ===== Import et modules ===== ===== Import et modules =====
dev/python/start.1605095884.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)