我原以为变量只能在声明之后才能访问。 但显然,Python的名称解析开始从内到外寻找。
我的问题是,这在可读性方面是不好的做法?我想知道这可能是Pythonista的常识,所以我可以从现在开始编写这种代码。
def outer():
def inner():
print x
x = ‘foo’
inner()
>>> outer()
>>> ‘foo’
答案 0 :(得分:0)
当调用 inner()
时,它会开始执行。在print x
行,它会看到变量名x
。然后它查找函数inner
的内部范围,在那里找不到变量x
。然后它查看外部范围,即outer
的范围。此时已定义变量x
(因为它在inner()
调用之前完成)并且使用了此变量。