试试这个:
A = 1
B = 2
C = A + B
def main():
global C
print A
main()
的输出为1
。
这是为什么?为什么main
要了解用于评估C
的其他全局变量?
答案 0 :(得分:8)
全局变量始终可用于Python中的所有本地范围,包括函数。在这种情况下,main()
A
,B
和C
都在范围内。
global
关键字不会像您认为的那样做;相反,它允许局部范围操纵全局函数(它使全局变量“可写”,可以这么说)。请考虑以下示例:
c = 4
print c
def foo():
c = 3
print c
foo()
print c
此处输出为
4
3
4
现在,请考虑一下:
c = 4
print c
def foo():
global c
c = 3
print c
foo()
print c
在这种情况下,输出将是
4
3
3
在第一种情况下,c = 3
仅影响c
,直到其范围为止(即函数定义结束时)。在第二种情况下,我们在写c
之后实际上是指对全局global c
的引用,因此更改c
的值将导致永久性更改。
答案 1 :(得分:4)
函数可以读取封闭范围内的变量。 global declaration用于编写变量(表示它们应该写入全局字典而不是本地字典)。