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


Posted in Python onJanuary 19, 2019

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

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

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

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

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

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

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

一个小窍门:

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

总结:

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

一些比较靠谱的方法是:

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

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

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

Python 相关文章推荐
python计算时间差的方法
May 20 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
Python如何为图片添加水印
Nov 25 Python
Python3爬虫学习入门教程
Dec 11 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 Python
PYTHON发送邮件YAGMAIL的简单实现解析
Oct 28 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 Python
基于Python的EasyGUI学习实践
May 07 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
解决GD中文乱码问题
2007/02/14 PHP
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
php面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
PHP中获取文件扩展名的N种方法小结
2012/02/27 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
php使用codebase生成随机数
2014/03/25 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
url参数中有+、空格、=、%、&、#等特殊符号的问题解决
2013/05/15 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
vue 动态创建组件的两种方法
2020/12/31 Vue.js
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
Python程序中设置HTTP代理
2016/11/06 Python
Python表示矩阵的方法分析
2017/05/26 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
汽车专业求职信
2014/06/05 职场文书
男方婚前保证书
2015/02/28 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
起诉书格式范文
2015/05/20 职场文书