Нюансҳои кор бо минтақаҳои дидани дар Python
Биёед нюансҳои муҳими кор бо тағирёбандаҳои маҳаллӣ ва глобалиро дида бароем.
Фарз мекунем, ки мо тағирёбандаи глобалӣ num дорем.
Биёед функсияи func созем,
ки num-и глобалиро
ба консол чоп мекунад:
num = 1
def func():
print(num)
func() # 1-ро чоп мекунад
Акнун таъин мекунем num-и маҳаллиро дар
сатр дар зери функсияи print. Баъд аз
иҷрои код дар консол хато чоп мешавад.
Ин ба он сабаб рӯй медиҳад, ки Python
дар дохили функсия num-ро танҳо
чун тағирёбандаи маҳаллӣ мефаҳмад, ки
то ҳол эълон нашудааст:
num = 1
def func():
print(num) # хато чоп мекунад
num = 2
Биёед акнун коди дохили функсияро аз нависем,
то ки қимати тағирёбандаи num
бар 2 зиёд шавад:
num = 1
def func():
num += 2 # хато чоп мекунад
Хато аз он сабаб рух додааст, ки ибораи num += 2
навиштаи зеринро ифода мекунад:
num = num + 2
Вале худи тағирёбандаи маҳаллӣ, ки ба он дар илова меояд, то ҳол эълон нашудааст. Ва ба ҳамин асос Python хато чоп мекунад, зеро ки шумора ба арзиши мавҷуднабударо илова кардан мумкин нест.
Натиҷаи иҷрои коди зерин чӣ хоҳад буд:
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)