Պայթոնում տեսանելիության տիրույթների աշխատանքի նրբությունները
Դիտարկենք լոկալ և գլոբալ փոփոխականների աշխատանքի կարևոր նրբությունները:
Ենթադրենք ունենք num գլոբալ փոփոխական:
Ստեղծենք func ֆունկցիա,
որը կոնսոլում կտպի գլոբալ num
փոփոխականը:
num = 1
def func():
print(num)
func() # կտպի 1
Այժմ ֆունկցիայի print տողից ցածր
հայտարարենք լոկալ num:
Կոդի կատարումից հետո կոնսոլում կհայտնվի սխալ:
Դա տեղի է ունենում, քանի որ Պայթոնը
ֆունկցիայի ներսում num-ը ընկալում է
որպես լոկալ փոփոխական, որը դեռ հայտարարված չէ:
num = 1
def func():
print(num) # կտպի սխալ
num = 2
Այժմ վերագրենք ֆունկցիայի ներսում գտնվող կոդը այնպես,
որ num փոփոխականի արժեքը
մեծանա 2-ով:
num = 1
def func():
num += 2 # կտպի սխալ
Սխալը պայմանավորված է նրանով, որ num += 2
արտահայտությունը ներկայացնում է հետևյալ գրառումը:
num = num + 2
Սակայն լոկալ փոփոխականը, որին գումարում են կատարում, դեռ հայտարարված չէ: Եվ, համապատասխանաբար, Պայթոնը տպում է սխալ, քանի որ անհնար է թիվ գումարել գոյություն չունեցող արժեքին:
Ինչ կլինի հետևյալ կոդի կատարման արդյունքը.
tst = '12'
def func():
tst = 12
return tst
print(tst)
Ինչ կլինի հետևյալ կոդի կատարման արդյունքը.
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Ինչ կլինի հետևյալ կոդի կատարման արդյունքը.
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)