鱼C论坛

 找回密码
 立即注册
查看: 1750|回复: 1

[已解决]在主程序a.py 及 导入的包 b.py 中都有 import c 语句,冲突吗?可以缩减一个吗?

[复制链接]
发表于 2023-6-15 14:25:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
主程序 a.py
-----------------------
import b
import c
...
--------------------



b.py 如下
-----------------
import c
....
------------------


那这个 import c 语句可以少写1个吗?哪个里的 import c 可以去掉?
最佳答案
2023-6-15 14:29:20
Python的导入系统是根据模块名称来管理模块的。当你在一个模块中使用  import c  语句时,Python会查找是否已经导入了该模块。

如果已经导入,那么Python会直接使用内存中的版本而不再重新导入。因此,对于你的问题,即使在两个不同的模块( a.py 和 b.py )中都使用了  import c ,并不会出现冲突。


同时,从编程的最佳实践来看,如果 a.py 和 b.py 都依赖于 c.py 模块,那么在每个模块中都显示地导入 c.py 是一个好的做法。

这是因为,一个好的模块应该是自包含的,也就是说它应该包含所有它所依赖的导入。

如果在 b.py 中我们去掉  import c ,然后 b.py 被其他程序或模块导入时,那么这些模块可能无法正常工作,因为它们找不到 b.py 所依赖的 c.py 模块。

如果在 a.py 中去掉 import c,那么但你需要使用 c 的时候,需要用 b.c,

所以总的来说,即使在  a.py  和  b.py  中都有  import c ,并不会有冲突,也不会导致重复加载的问题,Python会很好地处理这个问题。

此外,出于代码清晰度和模块自包含的原则,你应该在每个需要的地方都写上  import c 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-15 14:29:20 | 显示全部楼层    本楼为最佳答案   
Python的导入系统是根据模块名称来管理模块的。当你在一个模块中使用  import c  语句时,Python会查找是否已经导入了该模块。

如果已经导入,那么Python会直接使用内存中的版本而不再重新导入。因此,对于你的问题,即使在两个不同的模块( a.py 和 b.py )中都使用了  import c ,并不会出现冲突。


同时,从编程的最佳实践来看,如果 a.py 和 b.py 都依赖于 c.py 模块,那么在每个模块中都显示地导入 c.py 是一个好的做法。

这是因为,一个好的模块应该是自包含的,也就是说它应该包含所有它所依赖的导入。

如果在 b.py 中我们去掉  import c ,然后 b.py 被其他程序或模块导入时,那么这些模块可能无法正常工作,因为它们找不到 b.py 所依赖的 c.py 模块。

如果在 a.py 中去掉 import c,那么但你需要使用 c 的时候,需要用 b.c,

所以总的来说,即使在  a.py  和  b.py  中都有  import c ,并不会有冲突,也不会导致重复加载的问题,Python会很好地处理这个问题。

此外,出于代码清晰度和模块自包含的原则,你应该在每个需要的地方都写上  import c 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 19:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表