python导入模块交叉引用的方法

yipeiwu_com6年前Python基础

实际项目中遇到python模块相互引用问题,查资料,终于算是弄明白了。

首先交叉引用或是相互引用,实际上就是导入循环,关于导入循环的详细说明,可见我摘自《python核心编程》第二版的摘抄:Python导入循环方法。

附录给了一种解决交叉引用的方法,试了,不行,但关于交叉引用问题本身说明的很清楚,如果不清楚什么是交叉引用,可看附录一。

循环引用在python圈关注的并不多,语言上没有提供防止循环依赖的机制。

总的来说,应该在总体结构上避免模块之间互相依赖,即:A依赖B,B就不要依赖A,这也是代码重构的一个目标。

对于紧急情况,往往来不及对代码大动。

只要找到导致循环引用的模块(最少两个),把引用关系搞清楚,把某个模块让它在真正需要的时候再导入(一般放到函数里面),或者放到代码的最后导入,这样就可以基本解决模块循环依赖的问题。

一个小窍门:

查看循环引用的报错栈时,会找到两次导入同一个模块的文件。注意在这个附近找。

总结:

在python开发过程中,应尽量避免导入循环(交叉引用),但是,如果你开发了大型的 Python 工程, 那么你很可能会陷入这样的境地。

一些比较靠谱的方法是:

1. 把 import 语句放到方法定义的后面。

2. 将 import 语句移到函数的内部,只有在执行到这个模块时,才会导入相关模块。

以上这篇python导入模块交叉引用的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

使用Python的web.py框架实现类似Django的ORM查询的教程

Django中的对象查询 Django框架自带了ORM,实现了一些比较强大而且方便的查询功能,这些功能和表无关。比如下面这个例子: class Question(models.Mod...

Python中如何将一个类方法变为多个方法

Python中如何将一个类方法变为多个方法

前一篇文章《Python 中如何实现参数化测试?》中,我提到了在 Python 中实现参数化测试的几个库,并留下一个问题: 它们是如何做到把一个方法变成多个方法,并且将每个方法与相应的参...

Python程序退出方式小结

Python程序退出方式小结

对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这些方式也存在着一些区别,对相关的几种方法看了并实践了下,同时也记录下。 参考...

python被修饰的函数消失问题解决(基于wraps函数)

这篇文章主要介绍了python被修饰的函数消失问题解决(基于wraps函数),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 当使用@修...

Python实现的读取/更改/写入xml文件操作示例

本文实例讲述了Python实现的读取/更改/写入xml文件操作。分享给大家供大家参考,具体如下: 原始文档内容(test.xml): <?xml version="1....