Le sens des synonymes

Rappelez-vous que je vous ai présenté dans une leçon précédente la notion de synonyme en Python (À ce moment là, nous enseignions à Reeborg un synonyme en français : avance = move). Ce que j'appelle un synonyme est normalement appelé une variable. Et la notion de variables, et la façon dont elles changent, peut parfois être confuse pour les débutants. Je vais essayer de vous expliquer certains aspects en utilisant une petite histoire.

John, Pierre et Antonio sont trois bons amis qui habitent la même maison. John est originaire d'Angleterre, Pierre de France et Antonio d'Espagne.

Un jour, John parlait en anglais à Pierre. Durant cette conversation, John dit le mot "once", en parlant d'un événement qui s'est produit une seule fois. Pierre traduit ce concept dans son esprit par "une_fois".

Plus tard dans la journée, John parlait en espagnol avec Antonio. Il mentionna son nombre favori : "once" (11 en espagnol). Voici à quoi cela ressemble dans l'interpréteur Python :

>>> once = 1
>>> une_fois = once

>>> print 'once = ', once, ' une_fois = ', une_fois
once = 1 une_fois = 1

>>> once = 11

>>> print 'once = ', once, ' une_fois = ', une_fois
once = 11 une_fois = 1

Les différents mots des langues humaines sont associés à des concepts ou des objets qui sont indépendants des mots utilisés pour les représenter. Ainsi, "une_fois" est associé au nombre 1, à travers son association avec le mot "once". Cependant, "once" est juste un mot, pas un objet. Donc, quand "once" prend une valeur différente plus tard, le concept représenté par "une_fois" reste inchangé.

Jetons un œil sur une histoire différente. Pierre fait une liste de courses pour l'épicerie, avec deux articles (deux items) : "bananes" et "poires". Il la colle alors sur la porte du frigo. Plus tard dans la journée, John passe par là et remarque la liste aussi (a groceries list), qu'il associe avec le mot groceries. Plus tard encore, Pierre ajoute "pommes" à la liste. Il remarque qu'Antonio a déjà acheté des poires et se souvient qu'ils ont aussi besoin d'oranges. Il barre alors l'item "poires" et le remplace par "oranges". Voici ce que cela donne en Python :

>>> epicerie = ["bananes", "poires"]
>>> groceries = epicerie
>>> print epicerie
['bananes', 'poires']
>>> print groceries
['bananes', 'poires']

>>> epicerie.append("pommes")
>>> print epicerie
['bananes', 'poires', 'pommes']

>>> epicerie[1]="oranges"
>>> print epicerie
['bananes', 'oranges', 'pommes']

>>> print groceries
['bananes', 'oranges', 'pommes']

Pierre et John se réfèrent au même objet dans leur propre langue. Quand cet objet change, il change pour les deux de la même manière.

Cependant, si John avait fait sa propre copie de la liste, il n'aurait pas été au courant des changements faits par Pierre sur l'autre liste.

>>> epicerie = ["bananes", "poires"]
>>> groceries = list(epicerie)
>>> epicerie.append("pommes")
>>> epicerie[1] = "oranges"
>>> print epicerie
['bananes', 'oranges', 'pommes']
>>> print groceries
['bananes', 'poires']
début