Darbas su vardų sričių niuansai Python kalboje
Panagrinėkime svarbius lokalaus ir globalaus kintamųjų darbo niuansus.
Tarkime, kad turime globalų kintamąjį num.
Sukurkime funkciją func,
kuri atspausdins globalų num
į konsolę:
num = 1
def func():
print(num)
func() # išves 1
O dabar deklaruokime lokalų num
eilutėje žemiau funkcijos print. Po
kodo vykdymo į konsolę bus išvesta klaida.
Taip atsitinka dėl to, kad Python
funkcijos viduje suvokia num
tik kaip lokalų kintamąjį, kuris
dar nebuvo deklaruotas:
num = 1
def func():
print(num) # išves klaidą
num = 2
Dabar perrašykime kodą funkcijos viduje
taip, kad kintamojo num reikšmė
padidėtų 2:
num = 1
def func():
num += 2 # išves klaidą
Klaida sukelta dėl to, kad išraiška num += 2
atitinka šį užrašą:
num = num + 2
Tačiau pats lokalus kintamasis, prie kurio pridedama, dar nebuvo deklaruotas. Ir atitinkamai Python išveda klaidą, nes negalima pridėti skaičiaus prie neegzistuojančios reikšmės.
Koks bus šio kodo vykdymo rezultatas:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Koks bus šio kodo vykdymo rezultatas:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Koks bus šio kodo vykdymo rezultatas:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)