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


Posted in Python onJanuary 19, 2019

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

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

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

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

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

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

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

一个小窍门:

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

总结:

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

一些比较靠谱的方法是:

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

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

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

Python 相关文章推荐
Linux环境下MySQL-python安装过程分享
Feb 02 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
Python中Continue语句的用法的举例详解
May 14 Python
Python卸载模块的方法汇总
Jun 07 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
python的移位操作实现详解
Aug 21 Python
python函数不定长参数使用方法解析
Dec 14 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
May 03 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 Python
Python matplotlib 利用随机函数生成变化图形
Apr 26 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
php抓取页面与代码解析 推荐
2010/07/23 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
jQuery $.each的用法说明
2010/03/22 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Python中每次处理一个字符的5种方法
2015/05/21 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
python画折线图的程序
2018/07/26 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
python多进程使用函数封装实例
2020/05/02 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
毕业生的自我鉴定
2013/10/29 职场文书
新闻记者个人求职的自我评价
2013/11/28 职场文书
12岁生日感言
2014/01/21 职场文书
高一化学教学反思
2014/02/05 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
2014年审计人员工作总结
2014/12/19 职场文书