python中关于import语句的认识

本文探讨了Python中模块导入的机制及对全局变量的影响。通过具体实例展示了当从一个模块导入另一个模块时,被导入模块仅执行一次,强调了避免在模块顶层定义全局变量的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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多次,所以被调用的模块最好将全局变量的初始化代码放到函数里面,而不是主代码中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值