在 python 3.0 中,据我所知,当我使用在本地范围内找不到的变量时,它将一直返回,直到到达全局范围以查找该变量。
我有这个功能:
def make_withdraw(balance):
def withdraw(amount):
if amount>balance:
return 'insuffiscient funds'
balance=balance-amount
return balance
return withdraw
p=make_withdraw(100)
print(p(30))
当我插入一行时:
nonlocal balance
在withdraw函数定义下它工作得很好,但是当我不这样做时,它会给我一个错误,我在赋值之前引用了局部变量'balance',即使我在make_withdraw函数范围或全局范围内都有它。
为什么在其他情况下它会在以前的范围内找到一个变量而在这个范围内它不会?
谢谢!