Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? 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__.aaScript.a。现在,您调用load,它实际上是aScript.load,它修改了自己的aaScript.a),但是由于它对__main__.a一无所知,因此后者保持完整。

09-27 16:06