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


Posted in Python onJanuary 19, 2019

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

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

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

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

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

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

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

一个小窍门:

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

总结:

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

一些比较靠谱的方法是:

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

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

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

Python 相关文章推荐
python中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
python实现linux下使用xcopy的方法
Jun 28 Python
深入解析Python中的变量和赋值运算符
Oct 12 Python
Python选课系统开发程序
Sep 02 Python
django开发教程之利用缓存文件进行页面缓存的方法
Nov 10 Python
Python中xml和json格式相互转换操作示例
Dec 05 Python
Python学习笔记之变量、自定义函数用法示例
May 28 Python
Django组件content-type使用方法详解
Jul 19 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
浅谈ROC曲线的最佳阈值如何选取
Feb 28 Python
python安装第三方库如xlrd的方法
Oct 31 Python
Python实现为PDF去除水印的示例代码
Apr 03 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设计模式之单例模式实例分析
2015/02/25 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
Python的词法分析与语法分析
2013/05/18 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
Python项目打包成二进制的方法
2020/12/30 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
华为慧通面试题
2012/09/11 面试题
自荐书模板
2013/12/19 职场文书
一月红领巾广播稿
2014/02/11 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android