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


Posted in Python onJanuary 19, 2019

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

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

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

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

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

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

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

一个小窍门:

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

总结:

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

一些比较靠谱的方法是:

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

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

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

Python 相关文章推荐
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
浅析PHP与Python进行数据交互
May 15 Python
python筛选出两个文件中重复行的方法
May 31 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
Python生成MD5值的两种方法实例分析
Apr 26 Python
python os模块简单应用示例
May 23 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
python实现接口并发测试脚本
Jun 25 Python
pytorch进行上采样的种类实例
Feb 18 Python
Java多线程实现四种方式原理详解
Jun 02 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 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 XML Expat解析器知识点总结
2019/02/15 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
JavaScript中this详解
2015/09/01 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
vue ssr 指南详读
2018/06/29 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
用JS实现选项卡
2020/03/23 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
对Python中plt的画图函数详解
2018/11/07 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
python如何进行矩阵运算
2020/06/05 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
家电业务员岗位职责
2014/03/10 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
Python Numpy库的超详细教程
2022/04/06 Python
java版 简单三子棋游戏
2022/05/04 Java/Android