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


Posted in Python onJanuary 19, 2019

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

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

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

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

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

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

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

一个小窍门:

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

总结:

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

一些比较靠谱的方法是:

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

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

以上这篇python导入模块交叉引用的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用稀疏矩阵节省内存实例
Jun 27 Python
python模拟enum枚举类型的方法小结
Apr 30 Python
深入浅析ImageMagick命令执行漏洞
Oct 11 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
tensorflow 获取模型所有参数总和数量的方法
Jun 14 Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
Dec 02 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
Python3中urlencode和urldecode的用法详解
Jul 23 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
Python Serial串口基本操作(收发数据)
Nov 06 Python
python某漫画app逆向
Mar 31 Python
python添加模块搜索路径和包的导入方法
Jan 19 #Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 #Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 #Python
在pycharm 中添加运行参数的操作方法
Jan 19 #Python
解决项目pycharm能运行,在终端却无法运行的问题
Jan 19 #Python
Pycharm以root权限运行脚本的方法
Jan 19 #Python
Python自定义一个类实现字典dict功能的方法
Jan 19 #Python
You might like
Protoss兵种对照表
2020/03/14 星际争霸
php下的权限算法的实现
2007/04/28 PHP
php中rename函数用法分析
2014/11/15 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
JavaScript自执行闭包的小例子
2013/06/29 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
script不刷新页面的联动前后代码
2013/09/18 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Python常用特殊方法实例总结
2019/03/22 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
strstr()的简单实现
2013/09/26 面试题
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
教师实习自我鉴定
2013/12/11 职场文书
出国考察邀请函
2014/01/21 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
工会经费申请报告
2015/05/15 职场文书
cf战队宣传语
2015/07/13 职场文书
销售会议开幕词
2016/03/04 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
mysql如何能有效防止删库跑路
2021/10/05 MySQL
Java spring定时任务详解
2021/10/05 Java/Android
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python