【发布时间】:2017-06-18 16:01:16
【问题描述】:
为什么下面的代码无效:
def foo1(x=5):
def bar():
if x == 5:
x = 6
print(x)
bar()
此代码有效时:
def foo2(x=5):
def bar():
if x == 5:
print('ok')
print(x)
bar()
foo2() 将完全符合您的预期,但foo1() 将在if x == 5: 行给出UnboundLocalError: local variable 'x' referenced before assignment。为什么稍后在代码中更改 x 的值会使这个条件无效?
【问题讨论】:
-
Python 首先在代码中寻找赋值操作。从发生的那一刻起,它就被认为是一个局部变量,这确实是一个(不太优雅的)结果。
-
这能回答你的问题吗? Python inner functions
标签: python function variables scope