在范围需要时,在Python中声明变量的约定?

时间:2011-11-17 21:46:37

标签: python coding-style scope

举个例子:

def f():
    myvar = None
    def g():
        print myvar

    ...
    myvar = get_real_value()
    g()

“myvar = None”是一种传统的(或至少是合理的)声明变量的方式,使其对g()可见吗?有没有更好的办法? (Python 2.6.x,如果相关)

2 个答案:

答案 0 :(得分:3)

无需在g()

的定义之前声明变量
>>> def f():
...     def g():
...         print myvar
...     myvar = 1
...     g()
... 
>>> f()
1

但是,如果您可以避免引用g()中最适合的非本地变量,那么您可以通过将myvar作为g()的参数来执行此操作。

答案 1 :(得分:1)

您无需预先初始化变量;只需在调用g()之前初始化它。只需删除myvar = None行。

为清楚起见,我更喜欢将本地函数尽可能地移动到它们的调用点附近,这样函数使用的局部变量的初始化就会出现在函数本身之前。