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
  • asp之家 网络编程 m.aspxhome.com