Nyanser av arbete med scopingsområden i Python

Låt oss överväga viktiga nyanser av arbete med lokala och globala variabler.

Antag att vi har en global variabel num. Låt oss skapa en funktion func som kommer att skriva ut den globala num till konsolen:

pythonnum = 1

def func():
  print(num)

func() # skriver ut 1

Och nu deklarerar vi en lokal num på raden under funktionen print. Efter att koden har körts kommer ett fel att skrivas ut i konsolen. Detta händer på grund av att Python inuti funktionen uppfattar num endast som en lokal variabel som ännu inte har deklarerats:

pythonnum = 1

def func():
  print(num) # ger ett fel
  num = 2

Låt oss nu skriva om koden inuti funktionen så att värdet på variabeln num ökar med 2:

pythonnum = 1

def func():
  num += 2 # ger ett fel

Felet orsakas av att uttrycket num += 2 representerar följande notation:

pythonnum = num + 2

Men den lokala variabeln som tillägget sker till är ännu inte deklarerad. Och följaktligen ger Python ett fel, eftersom det inte går att lägga till ett nummer till ett icke-existerande värde.

Задание 1

Vad blir resultatet av att köra följande kod:

pythontst = '12'

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

Vad blir resultatet av att köra följande kod:

pythontst = 'abc'

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

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

Vad blir resultatet av att köra följande kod:

pythontst = 'abc'

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