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


Posted in Python onJanuary 19, 2019

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

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

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

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

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

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

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

一个小窍门:

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

总结:

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

一些比较靠谱的方法是:

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

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

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

Python 相关文章推荐
python编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
Python爬取读者并制作成PDF
Mar 10 Python
django使用xlwt导出excel文件实例代码
Feb 06 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
Python代理IP爬虫的新手使用教程
Sep 05 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
Sep 23 Python
Python安装whl文件过程图解
Feb 18 Python
Python基于正则表达式实现计算器功能
Jul 13 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
利用Python发送邮件或发带附件的邮件
Nov 12 Python
Python提取PDF指定内容并生成新文件
Jun 09 Python
Django模型层实现多表关系创建和多表操作
Jul 21 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+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
js中关于String对象的replace使用详解
2011/05/24 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
微信小程序 火车票查询实例讲解
2016/10/17 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
理解javascript中的闭包
2017/01/11 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
在vue项目中使用sass语法问题
2019/07/18 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
2019/09/10 Javascript
跟老齐学Python之print详解
2014/09/28 Python
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
python输出带颜色字体实例方法
2019/09/01 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
python实现人工蜂群算法
2020/09/18 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
html5与css3小应用
2013/04/03 HTML / CSS
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
易程科技软件测试笔试
2013/03/24 面试题
专项法律服务方案
2014/06/11 职场文书