Em có 1 đoạn code Python như sau:
def do():
def run():
if (i > MAX):
print("Done")
return None
else:
print(i)
i += 1
from time import sleep
sleep(0.1)
run()
MAX = 100
i = 0
run()
do()
Code này em bị lỗi UnboundLocalError: local variable 'i' referenced before assignment. Dòng i = 0 dù em có khai báo trước hay sau run() đều bị lỗi như trên. Khi em thêm dòng nonlocal i vào trước print(i) thì compile được và có dòng warning SyntaxWarning: name 'i' is used prior to nonlocal declaration.
Em muốn thắc mắc là, tại sao biến MAX không cần khai báo global hay nonlocal mà biến i phải khai báo nonlocal (và có thể là global)?
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?