Python 一个文件定义全局变量,在另一个文件修改全局变量,在另一个文件访问时竟然是没修改的内容!?

下面有三个文件:

# file: globals
l = []
# file: done
from globals import l

def change():
    global l
    l = [1, 2]
# file: main
from globals import l
from done import change

if __name__ == '__main__':
    change()
    l.append(6)
    print(l) # [6]

执行main文件,打印出来的内容为: [6]

为什么change()明明修改了全局变量,最终在main里面获取的确实没有修改的l

用的Python解释器版本为3.7.8

因为你调用l.append(6)这句的时候,l=[]了,所以呢全局变量初始化和改变的文件最好写在一个里面

#全局文件globals
def _init():
    global l
    l=[]
def change(value):
    global l
    l = value

# file: main
import globals
 
if __name__ == '__main__':
    globals._init()
    globals.change([1,2])
    globals.l.append(6)
    print(globals.l)