python可以在本地范围内声明全局变量吗?
有效:
def main():
# do some... for files varible
for file in files:
result = func(file)
print result
我无法理解。
有人告诉我为什么result
可以在for
循环之外看到。
谢谢你。
答案 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