Kehalusan bekerja dengan skop dalam Python
Pertimbangkan kehalusan penting bekerja dengan pembolehubah tempatan dan global.
Katakan kita ada pembolehubah global num.
Mari kita buat fungsi func,
yang akan memaparkan num global
ke konsol:
num = 1
def func():
print(num)
func() # akan memaparkan 1
Sekarang mari isytiharkan num tempatan pada
baris di bawah fungsi print. Selepas
kod dilaksanakan, ralat akan dipaparkan dalam konsol.
Ini berlaku kerana Python
dalam fungsi menganggap num
hanya sebagai pembolehubah tempatan, yang
belum diisytiharkan:
num = 1
def func():
print(num) # akan memaparkan ralat
num = 2
Sekarang mari kita tulis semula kod dalam fungsi
supaya nilai pembolehubah num
bertambah sebanyak 2:
num = 1
def func():
num += 2 # akan memaparkan ralat
Ralat disebabkan oleh fakta bahawa ungkapan num += 2
mewakili entri berikut:
num = num + 2
Walau bagaimanapun, pembolehubah tempatan itu sendiri, yang mana penambahan dilakukan, belum diisytiharkan. Oleh itu, Python memaparkan ralat, kerana adalah mustahil untuk menambah nombor kepada nilai yang tidak wujud.
Apakah hasil pelaksanaan kod berikut:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Apakah hasil pelaksanaan kod berikut:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Apakah hasil pelaksanaan kod berikut:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)