下面有三个文件:
# 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)