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 06 Python
Python网页解析利器BeautifulSoup安装使用介绍
Mar 17 Python
收藏整理的一些Python常用方法和技巧
May 18 Python
Python合并两个字典的常用方法与效率比较
Jun 17 Python
剖析Python的Twisted框架的核心特性
May 25 Python
python实现简单爬虫功能的示例
Oct 24 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
Python 存储字符串时节省空间的方法
Apr 23 Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 Python
Python中and和or如何使用
May 28 Python
Python中关于logging模块的学习笔记
Jun 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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
PHP中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
php中异常处理方法小结
2015/01/09 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
IE 下的只读 innerHTML
2009/08/21 Javascript
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
python中MethodType方法介绍与使用示例
2017/08/03 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
Python matplotlib可视化实例解析
2020/06/01 Python
基于Python实现简单学生管理系统
2020/07/24 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
劳动实践课感言
2014/02/01 职场文书
银行委托书范本
2014/04/04 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
北京故宫导游词
2015/01/31 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL