在内部函数之后定义变量是一种不好的做法?

时间:2017-10-17 09:17:50

标签: python python-2.7 python-3.x

我原以为变量只能在声明之后才能访问。 但显然,Python的名称解析开始从内到外寻找。

我的问题是,这在可读性方面是不好的做法?我想知道这可能是Pythonista的常识,所以我可以从现在开始编写这种代码。

def outer():
    def inner():
        print x
    x = ‘foo’
    inner()
>>> outer()
>>> ‘foo’

1 个答案:

答案 0 :(得分:0)

调用 inner()时,它会开始执行。在print x行,它会看到变量名x。然后它查找函数inner的内部范围,在那里找不到变量x。然后它查看外部范围,即outer的范围。此时已定义变量x(因为它在inner()调用之前完成)并且使用了此变量。