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


Posted in Python onJanuary 19, 2019

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

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

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

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

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

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

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

一个小窍门:

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

总结:

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

一些比较靠谱的方法是:

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

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

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

Python 相关文章推荐
天翼开放平台免费短信验证码接口使用实例
Dec 18 Python
python读取csv文件示例(python操作csv)
Mar 11 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
Python中最大递归深度值的探讨
Mar 05 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 Python
Python实现插入排序和选择排序的方法
May 12 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
Jan 20 Python
python Scrapy爬虫框架的使用
Jan 21 Python
pandas数据分组groupby()和统计函数agg()的使用
Mar 04 Python
OpenCV图像变换之傅里叶变换的一些应用
Jul 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/08/20 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
2017/09/10 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
JS实现li标签的删除
2019/04/12 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
js实现简单扫雷
2020/11/27 Javascript
python实现dict版图遍历示例
2014/02/19 Python
使用Python对SQLite数据库操作
2017/04/06 Python
python实现SOM算法
2018/02/23 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
会计专业毕业自荐书范文
2014/02/08 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
营销经理工作检讨书
2014/11/03 职场文书
介绍信的写法
2015/01/31 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书