python可以在本地范围内声明全局变量吗?

时间:2012-08-19 01:25:36

标签: python scope

python可以在本地范围内声明全局变量吗?

有效:

def main():
    # do some... for files varible
    for file in files:
       result = func(file)
    print result

我无法理解。 有人告诉我为什么result可以在for循环之外看到。

谢谢你。

3 个答案:

答案 0 :(得分:6)

for语句不会启动新范围。只有模块,类声明和函数定义才能启动新的范围。

答案 1 :(得分:1)

我没有看到全局变量声明。 result是一个局部变量,file也是如此。你在谈论files吗?这看起来像一个全局变量,但我没有看到它在本地声明。

根据@ DSM的有用评论进行更新:

如果你在result循环中讨论for被声明为本地声明,那么它在Python中不起作用,for - 循环不会创建一个本地范围。

答案 2 :(得分:0)

如果某个函数使用赋值=或授权的assignemnt(即+=),则默认情况下该变量被视为local。但是,如果您要进行分配global,请使用global关键字。

foo = 2
def bar():
    foo = 3 # foo is locally defined here

def car():
    global foo
    foo = 4 # foo is globally reassigned here

bar() # foo is still 2
car() # foo is now 4