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


Posted in Python onJanuary 19, 2019

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

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

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

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

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

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

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

一个小窍门:

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

总结:

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

一些比较靠谱的方法是:

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

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

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

Python 相关文章推荐
Python 搭建Web站点之Web服务器网关接口
Nov 06 Python
python分析作业提交情况
Nov 22 Python
Python中collections模块的基本使用教程
Dec 07 Python
python3.4爬虫demo
Jan 22 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
Python中base64与xml取值结合问题
Dec 22 Python
Python list运算操作代码实例解析
Jan 20 Python
Scrapy框架基本命令与settings.py设置
Feb 06 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
Vue的Options用法说明
2020/08/14 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
Python使用wxPython实现计算器
2018/01/30 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
python可视化实现KNN算法
2019/10/16 Python
python实现串口通信的示例代码
2020/02/10 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
西安当代医院管理研究院笔试题
2015/12/11 面试题
铁路个人事迹材料
2014/01/30 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
婚前保证书
2014/04/29 职场文书
扬州个园导游词
2015/02/06 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
中秋节感想
2015/08/10 职场文书