Python中从一个模块运行另一个模块的最简单的方法就是用Import语句,import语句会执行被调用模块里面的主代码,而且import之后还可以用 . 操作符调用被调用模块里的函数。现在举个例子如下:
a.py:
for i in range(3):
import b
b.ShowList()
b.py:
print('b.main:i am imported.')
list=[]
def ShowList():
list.append(1)
print('b.ShowList:the content of list is'+str(list))
a 模块import b模块会执行b中的主代码,也就是b的前两行,a通过b.ShowList()来调用b中的ShowList函数。现在预期的效果是循环3次,import b以清空list,然后list里添加一个数1,最后打印List的内容。所以最后应该打印三个相同内容的List,都只有一个元素1 。
然而实际效果是:
b.main:i am imported.
b.ShowList:the content of list is[1]
b.ShowList:the content of list is[1, 1]
b.ShowList:the content of list is[1, 1, 1]
不是期望的结果,所以可以得到结论,a中import语句循环了3次,只有第一次会调用b的主代码,所以相同的模块不会被import多次,所以被调用的模块最好将全局变量的初始化代码放到函数里面,而不是主代码中。