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 :

pythonnum = 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 :

pythonnum = 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 :

pythonnum = 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 :

pythonnum = 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.

Задание 1

Quel sera le résultat de l'exécution du code suivant :

pythontst = '12'

def func():
  tst = 12
  return tst
  
print(tst)
Задание 2

Quel sera le résultat de l'exécution du code suivant :

pythontst = 'abc'

def func():
  tst = tst.upper()
  return tst

func()
print(tst)
Задание 3

Quel sera le résultat de l'exécution du code suivant :

pythontst = 'abc'

def func():
txt = tst.upper()
return txt
    
print(func())
print(tst)