Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
5年前关闭。
这是我的简单脚本,称为aScript.py:
然后在python解释器中执行以下4个命令:
为什么打印:
而不是(这是我所期望的):
我正在使用python 2.6。
谢谢!
...为什么打印0 0?
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
5年前关闭。
这是我的简单脚本,称为aScript.py:
a = 0
def load():
global a
a = 1
def plot():
print a
然后在python解释器中执行以下4个命令:
>>>from aScript import *
>>>print a
>>>load()
>>>print a
为什么打印:
0
0
而不是(这是我所期望的):
0
1
我正在使用python 2.6。
谢谢!
...为什么打印0 0?
最佳答案
global
变量仅在其自己的模块中是全局变量,因此load()
仅修改a
内部的aScript
变量,而不修改导入的a
。
当您执行from aScript import *
时,python会遍历aScript
的公共变量并在当前模块中创建每个变量的副本,也就是说,它将创建等于__main__.a
的aScript.a
。现在,您调用load
,它实际上是aScript.load
,它修改了自己的a
(aScript.a
),但是由于它对__main__.a
一无所知,因此后者保持完整。
09-27 16:06