Programmation Python/Variables
Affectations.
En Python comme dans de nombreux autres langages, le symbole "=" est l'opérateur d'affectation. Cette valeur restera accessible jusqu'à la fin de l'exécution du programme (vérifiable avec "print(x)").
La valeur de la variable peut être un littéral, c'est-à-dire une constante, ou bien une expression (ex : une autre variable ou une instruction comme "1+1"). L'expression est évaluée avant d'être affectée à la variable.
Ex :
 BASE_URL = "https://api.example.com"
Réaffectation.
Si la variable affectée n'existe pas, l'ordinateur la crée, sinon il écrase sa valeur. En effet, il est permis de ré-affecter une nouvelle valeur à une même variable, autant de fois qu'on le souhaite.
Ceci nous amène à attirer votre attention sur le fait que le symbole "égale" utilisé sous Python pour réaliser une affectation ne doit en aucun cas être confondu avec un symbole d'égalité tel qu'il est compris en mathématique. Il est tentant d'interpréter l'instruction codice_1 comme une affirmation d'égalité, mais ce n'en est pas une !
En programmation, une première instruction d'affectation peut rendre égales les valeurs de deux variables, et une instruction ultérieure en changer ensuite l'une ou l'autre. Exemple :
Affectations multiples.
Sous Python, on peut assigner une valeur à plusieurs variables simultanément. Exemple d' :
Affectations parallèles.
On peut aussi effectuer des à l'aide d'un seul opérateur :
1. 
»> largeur = 20 # affecte la valeur 20 à largeur
»> hauteur = 5 * 9.3 # affecte le résultat à hauteur
»> largeur * hauteur # multiplie les 2 variables (largeur et hauteur)
930.0 # affiche le résultat de la multiplication des 2 variables
2.
Ou plus avancé avec un import afin de l'avoir sous forme de fraction :
» from fractions import * # Import du module fraction dans son ensemble
»> a, b, c = 3, 5, 7
»> print(a - Fraction(b/c)) # Appel de Fraction du module fractions
20587884010836553/9007199254740992
Principe de fonctionnement.
L'essentiel du travail effectué par un programme d'ordinateur consiste à manipuler des données. Ces données peuvent être très diverses (tout ce qui est "numérisable", en fait), mais dans la mémoire de l'ordinateur elles se ramènent toujours en définitive à "une suite finie de nombres binaires".
Pour pouvoir accéder aux données, le programme d'ordinateur (quel que soit le langage dans lequel il est écrit) fait abondamment usage d'un grand nombre de "variables" de différents types.
Une variable apparaît dans un langage de programmation sous un "nom de variable" à peu près quelconque, mais pour l'ordinateur il s'agit d'une "référence" désignant une "adresse mémoire", c'est-à-dire un emplacement précis dans la mémoire vive.
À cet emplacement est stocké une "valeur" bien déterminée. C'est la donnée proprement dite, qui est donc stockée sous la forme d'une suite de nombres binaires, mais qui n'est pas nécessairement un nombre aux yeux du langage de programmation utilisé. Cela peut être en fait à peu près n'importe quel « objet » susceptible d'être placé dans la mémoire d'un ordinateur, par exemple : un nombre entier, un nombre réel, un nombre complexe, un vecteur, une chaîne de caractères typographique, un tableau, une fonction, etc.
Exemple.
Prenons l'exemple suivant :
Les exemples ci-dessus illustrent des instructions d'affectation Python tout à fait classiques.
Après qu'on les ait exécutées, il existe dans la mémoire de l'ordinateur, à des endroits différents :
Les trois instructions d'affectation ci-dessus ont eu pour effet chacune de réaliser plusieurs opérations dans la mémoire de l'ordinateur :
On peut mieux se représenter tout cela par un diagramme d'état tel que celui-ci :
Les trois noms de variables sont des "références", mémorisées dans une zone particulière de la mémoire que l'on appelle espace de noms, alors que les valeurs correspondantes sont situées ailleurs, dans des emplacements parfois fort éloignés les uns des autres.
Les références.
Formellement, les variables Python sont des références, c'est à dire que écrire "a = ((1,0,0),(0,1,0),(0,0,1))" ne signifie pas que "a" vaut "((1,0,0),(0,1,0),(0,0,1))" mais que "a" référence le "((1,0,0),(0,1,0),(0,0,1))". La différence est que ensuite, une autre variable peut référencer le même n-uplet, simplement avec "b = a". Si on modifie "b", alors "a" sera également modifié.
Notez que a et b ne sont pas "liés", ils référencent simplement le même objet.
Si ensuite on fait référence à un nouvel objet (par l'intermédiaire de l'opérateur d'affectation "="), b référencera toujours l'ancien objet, et une modification de l'un des objets ne modifiera pas l'autre.
Idem pour les nombres :
Noms des variables.
Les noms de variables sont des noms que vous choisissez vous-même assez librement. Efforcez-vous cependant de bien les choisir : de préférence assez courts, mais aussi explicites que possible, de manière à exprimer clairement ce que la variable est censée contenir. Par exemple, des noms de variables tels que "longitude" et "latitude" conviennent mieux que "x" et "y", car un bon programmeur doit veiller à ce que ses lignes d'instructions soient faciles à lire.
Sous Python, les noms de variables doivent en outre obéir à quelques règles simples :
Il faut également noter que les variables dont le nom commence par le caractère _ ont une signification particulière :
De plus, il est recommandé d'écrire les noms de variables avec une minuscule, car l'usage veut qu'on le réserve plutôt la majuscule aux noms de classes.
Si le nom d'une variable doit comporter plusieurs mots, il y a deux possibilités d'écrire le nom de la variable :
Il convient aussi d'éviter autant que possible l'énumération de variables (toto1, toto2, toto3, ...), cela rend le programme parfaitement incompréhensible et sujet à des erreurs.
Il est possible de préfixer le nom de la variable par son type. Par exemple int_margeBrut, str_message_de_bienvenue, mais cela alourdit très fortement le programme. On pourra par exemple s'inspirer de la qui formalise ce mécanisme.
Sinon, d'autres notations existent ou peuvent être imposées en fonction d'un projet, des habitudes d'une entreprise, etc.
Lister les variables.
 print(os.environ)
 print(globals())
 print(locals())

Programmation Python/Structures de contrôle