编写像这样的代码时遇到了一些麻烦
def wrapper(v):
v()
def abc():
b=1
c=2
def bc():
b=b+c
wrapper(bc)
return b
print(abc())
结果为UnboundLocalError: local variable 'b' referenced before assignment
出于某种原因,我must
以这种方式编写代码。
所以我改变了我的代码,以摆脱那个dame问题
def wrapper(v):
v()
def abc():
b=[1,2]
def bc():
b[0]=b[1]+b[0]
wrapper(bc)
return b[0]
print(abc())
当我运行这个脚本时,得到3令人难以置信。 我想知道关于这种现象的理性解释。 为什么我不能在第一次获得3?
答案 0 :(得分:0)
编写代码真是一种奇怪的方式。但是如果你出于某种原因需要这个结构:你的第一个代码的主要问题是你忘记了每个函数末尾的return语句。 此代码重现3并且接近您的版本:
def wrapper(v):
return v()
def abc():
b = 1
c = 2
def bc():
return b + c
return wrapper(bc)
print(abc())