python导入模块交叉引用的方法
作者:qq_34146899 时间:2021-11-01 07:03:42
实际项目中遇到python模块相互引用问题,查资料,终于算是弄明白了。
首先交叉引用或是相互引用,实际上就是导入循环,关于导入循环的详细说明,可见我摘自《python核心编程》第二版的摘抄:Python导入循环方法。
附录给了一种解决交叉引用的方法,试了,不行,但关于交叉引用问题本身说明的很清楚,如果不清楚什么是交叉引用,可看附录一。
循环引用在python圈关注的并不多,语言上没有提供防止循环依赖的机制。
总的来说,应该在总体结构上避免模块之间互相依赖,即:A依赖B,B就不要依赖A,这也是代码重构的一个目标。
对于紧急情况,往往来不及对代码大动。
只要找到导致循环引用的模块(最少两个),把引用关系搞清楚,把某个模块让它在真正需要的时候再导入(一般放到函数里面),或者放到代码的最后导入,这样就可以基本解决模块循环依赖的问题。
一个小窍门:
查看循环引用的报错栈时,会找到两次导入同一个模块的文件。注意在这个附近找。
总结:
在python开发过程中,应尽量避免导入循环(交叉引用),但是,如果你开发了大型的 Python 工程, 那么你很可能会陷入这样的境地。
一些比较靠谱的方法是:
1. 把 import 语句放到方法定义的后面。
2. 将 import 语句移到函数的内部,只有在执行到这个模块时,才会导入相关模块。
来源:https://blog.csdn.net/qq_34146899/article/details/52530844
标签:python,模块,引用
0
投稿
猜你喜欢
asp如何获知文件最后的修改日期和时间?
2009-11-24 20:49:00
python中正则表达式的使用详解
2023-08-08 14:47:13
FSO组件之驱动器操作asp源码
2010-05-03 10:59:00
jsp中文显示问号问题解决方法
2023-07-22 10:33:50
UCDChina.com 关于用户期望的讨论
2008-07-10 11:55:00
常见的在Python中实现单例模式的三种方法
2022-11-08 01:42:09
Python中的字符串切片(截取字符串)的详解
2023-07-23 20:37:59
XML与HTML的结合(下)
2008-09-05 17:20:00
解读python基于netconf协议获取网元的数据
2023-06-29 20:26:23
教你快速了解公共MySQL的数据库服务器层
2008-12-17 17:10:00
ASP利用TCPIP.DNS组件实现域名IP查询
2010-02-26 11:25:00
PHP rsa加密解密算法原理解析
2023-08-18 17:23:38
事件检测
2009-04-11 18:03:00
实现框架页面iframe的背景透明方法
2008-06-18 12:21:00
用ASP+CSS实现随机背景
2007-09-26 12:33:00
PHP写的求多项式导数的函数代码
2023-09-10 05:42:56
Mysql全局ID生成方法
2023-07-02 13:59:53
xWin的HTC分享
2009-09-13 18:50:00
使用 TRUNCATE TABLE 删除所有行
2008-04-24 19:20:00
[组图]手把手教你制作ASP留言本
2007-09-22 09:32:00