试试这个:
A = 1
B = 2
C = A + B
def main():
global C
print A
main() 的输出是1。
这是为什么?为什么 main 应该了解用于计算 C 的其他全局变量?
请您参考如下方法:
全局变量始终可用于 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 直到它的作用域结束(即当函数定义结束时)。在第二种情况下,我们实际上是在编写 global c 之后引用对全局 c 的引用,因此更改 c 的值将导致永久性的改变。
