6.1 Les variables sont des références
En Python, les variables sont des références à des objets, et non la variable elle-même. Cela signifie que lorsque tu crées une variable en Python, tu crées simplement une référence à un objet en mémoire.
Cette caractéristique du langage a des implications importantes pour le travail avec les variables, surtout lors de la transmission d'objets aux fonctions ou leur affectation à d'autres variables.
Lorsque tu crées une variable et lui attribues une valeur, Python alloue un objet en mémoire pour cette valeur et fait de la variable une référence à cet objet. Si tu assignes une variable à une autre, la nouvelle variable référencera le même objet que la variable d'origine. Cela signifie que les modifications effectuées via une variable se refléteront également sur l'autre, si l'objet est modifiable.
Exemple :
a = [1, 2, 3]
b = a
b.append(4)
print(a) # Affichera: [1, 2, 3, 4]
Nous avons ajouté le nombre 4
à la variable b
, mais il a également été ajouté à la liste dans la variable a
, car en réalité les deux variables ne sont que des références à l'objet liste [1, 2, 3].
6.2 Objets immuables
En Python, les objets sont divisés en modifiables et immuables. Les objets modifiables, tels que les listes et les dictionnaires, peuvent être modifiés après leur création.
Les objets immuables, comme les chaînes de caractères et les nombres, ne peuvent pas être modifiés après leur création. Lorsque tu travailles avec des objets immuables, les modifications entraînent la création d'un nouvel objet :
L'affectation ne modifie jamais un objet :
a = 5 # a stocke une référence à l'objet 5
b = a # b stocke aussi une référence à l'objet 5
b = 3 # maintenant b stocke une référence à l'objet 3
print(a) # Affichera: 5
Un objet peut être modifié en appelant sa fonction :
a = [1, 2, 3]
b = a
b.append(4)
print(a) # Affichera: [1, 2, 3, 4]
Mais il y a des objets immuables qui ont des fonctions. Ces fonctions ne modifient pas l'objet d'origine mais renvoient un nouvel objet qui contient le nouveau résultat :
name = "Alex"
print(name) # Affichera: Alex
name2 = name.lower()
print(name2) # Affichera: alex
Les chaînes de caractères sont des objets immuables. Et bien qu'elles aient des méthodes, ces méthodes ne changent jamais l'objet de la chaîne — à la place, elles renvoient toujours une nouvelle chaîne (un nouvel objet). L'ancien objet reste inchangé.
6.3 Travailler avec le type None
En Python, il existe un type de données spécial représentant l'absence de valeur — None
. Il est utilisé pour désigner des variables vides ou comme valeur de retour pour les fonctions qui ne renvoient rien. Comprendre None est important pour gérer le comportement du programme, surtout dans le contexte des opérateurs conditionnels et du traitement des données.
Principes de base de l'utilisation de None
None
est l'unique instance de la classe NoneType
. Il est utilisé pour indiquer qu'une variable n'a pas de valeur. Dans les conditions, None
est évalué comme faux (False
).
a = None
if a:
print("a est True")
else:
print("a est None ou False")
Comparaison avec None
La vérification d'une variable par rapport à None doit se faire à l'aide de l'opérateur is
, et non ==. L'opérateur is
vérifie l'identité, pas l'égalité des valeurs.
a = None
if a is None:
print("a est None")
else:
print("a a une valeur")
None dans les fonctions
None
est souvent utilisé dans les fonctions qui ne doivent pas explicitement retourner une valeur. Si une fonction ne renvoie pas de valeur, elle renvoie implicitement None
.
def func():
print("Cette fonction renvoie None")
result = func()
print(result) # Affichera: None
None et les listes
None
peut être utilisé dans les listes, tuples, ou d'autres collections pour indiquer l'absence d'un élément à une position donnée.
my_list = [1, None, 3]
print(my_list) # Affichera: [1, None, 3]
GO TO FULL VERSION