Subtilités de la gestion des portées en Python
Examinons les subtilités importantes du travail avec les variables locales et globales.
Supposons que nous ayons une variable globale num.
Créons une fonction func
qui affichera le num global
dans la console :
num = 1
def func():
print(num)
func() # affichera 1
Maintenant, déclarons une variable locale num sur
la ligne suivant la fonction print. Après
l'exécution du code, une erreur s'affichera dans la console.
Cela se produit parce que Python,
à l'intérieur de la fonction, perçoit num
uniquement comme une variable locale qui
n'a pas encore été déclarée :
num = 1
def func():
print(num) # affichera une erreur
num = 2
Réécrivons maintenant le code à l'intérieur de la fonction
de sorte que la valeur de la variable num
augmente de 2 :
num = 1
def func():
num += 2 # affichera une erreur
L'erreur est causée par le fait que l'expression num += 2
représente l'écriture suivante :
num = num + 2
Cependant, la variable locale elle-même, à laquelle l'addition est effectuée, n'est pas encore déclarée. Et par conséquent, Python affiche une erreur, puisqu'il est impossible d'ajouter un nombre à une valeur inexistante.
Quel sera le résultat de l'exécution du code suivant :
tst = '12'
def func():
tst = 12
return tst
print(tst)
Quel sera le résultat de l'exécution du code suivant :
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Quel sera le résultat de l'exécution du code suivant :
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)