【发布时间】:2019-07-12 12:53:01
【问题描述】:
我在编写的关于变量范围的内部函数遇到了问题。我已经设法简化代码以指出确切的问题。所以开始:
def outer(foo):
def inner(bar):
print(foo)
print(bar)
return inner
if __name__ == "__main__":
function = outer("foo")
function("bar")
我会得到预期的输出:
foo
bar
但是,如果我尝试重新分配 foo,则会收到错误:
def outer(foo):
def inner(bar):
foo = "edited " + foo
print(foo)
print(bar)
return inner
这给出了:
UnboundLocalError: local variable 'foo' referenced before assignment
这让我想起了全局变量,您可以在其中正常“读取”它们,但要“写入”您必须执行“全局变量;变量=...”。是不是一样的情况?如果是这样,是否有允许从内部修改 foo 的关键字?还有为什么?当然,一旦我创建了该函数,那么 foo 就为该函数固定了。 IE。不是全球性的。这里避免了什么问题?
【问题讨论】: