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


Posted in Python onJanuary 19, 2019

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

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

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

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

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

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

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

一个小窍门:

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

总结:

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

一些比较靠谱的方法是:

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

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

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

Python 相关文章推荐
使用Python发送各种形式的邮件的方法汇总
Nov 09 Python
Python装饰器入门学习教程(九步学习)
Jan 28 Python
Python 中 list 的各项操作技巧
Apr 13 Python
Python常用字符串替换函数strip、replace及sub用法示例
May 21 Python
python并发和异步编程实例
Nov 15 Python
python+opencv实现高斯平滑滤波
Jul 21 Python
python检测服务器端口代码实例
Aug 31 Python
python异步编程 使用yield from过程解析
Sep 25 Python
python对象转字典的两种实现方式示例
Nov 07 Python
Python object类中的特殊方法代码讲解
Mar 06 Python
python新手学习可变和不可变对象
Jun 11 Python
Python性能分析工具py-spy原理用法解析
Jul 27 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
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
PHP删除数组中空值的方法介绍
2014/04/14 PHP
php输入数据统一类实例
2015/02/23 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
Smarty模板配置实例简析
2019/07/20 PHP
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
html5用video标签流式加载的实现
2020/05/20 HTML / CSS
毕业生在校学习的自我评价分享
2013/10/08 职场文书
司机辞职报告范文
2014/01/20 职场文书
运动会广播稿80字
2014/01/23 职场文书
市场推广策划方案
2014/06/02 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
郭明义观后感
2015/06/08 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android