Պայթոնում տեսանելիության տիրույթների աշխատանքի նրբությունները

Դիտարկենք լոկալ և գլոբալ փոփոխականների աշխատանքի կարևոր նրբությունները:

Ենթադրենք ունենք num գլոբալ փոփոխական: Ստեղծենք func ֆունկցիա, որը կոնսոլում կտպի գլոբալ num փոփոխականը:

pythonnum = 1

def func():
  print(num)

func() # կտպի 1

Այժմ ֆունկցիայի print տողից ցածր հայտարարենք լոկալ num: Կոդի կատարումից հետո կոնսոլում կհայտնվի սխալ: Դա տեղի է ունենում, քանի որ Պայթոնը ֆունկցիայի ներսում num-ը ընկալում է որպես լոկալ փոփոխական, որը դեռ հայտարարված չէ:

pythonnum = 1

def func():
  print(num) # կտպի սխալ
  num = 2

Այժմ վերագրենք ֆունկցիայի ներսում գտնվող կոդը այնպես, որ num փոփոխականի արժեքը մեծանա 2-ով:

pythonnum = 1

def func():
  num += 2 # կտպի սխալ

Սխալը պայմանավորված է նրանով, որ num += 2 արտահայտությունը ներկայացնում է հետևյալ գրառումը:

pythonnum = num + 2

Սակայն լոկալ փոփոխականը, որին գումարում են կատարում, դեռ հայտարարված չէ: Եվ, համապատասխանաբար, Պայթոնը տպում է սխալ, քանի որ անհնար է թիվ գումարել գոյություն չունեցող արժեքին:

Задание 1

Ինչ կլինի հետևյալ կոդի կատարման արդյունքը.

pythontst = '12'

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

Ինչ կլինի հետևյալ կոդի կատարման արդյունքը.

pythontst = 'abc'

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

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

Ինչ կլինի հետևյալ կոդի կատարման արդյունքը.

pythontst = 'abc'

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