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


Posted in Python onJanuary 19, 2019

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

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

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

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

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

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

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

一个小窍门:

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

总结:

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

一些比较靠谱的方法是:

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

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

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

Python 相关文章推荐
Python中subprocess的简单使用示例
Jul 28 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 Python
Python生成器以及应用实例解析
Feb 08 Python
python TK库简单应用(实时显示子进程输出)
Oct 29 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
python之array赋值技巧分享
Nov 28 Python
使用 pytorch 创建神经网络拟合sin函数的实现
Feb 24 Python
python中shell执行知识点
May 06 Python
Python小白不正确的使用类变量实例
May 29 Python
什么是Python中的匿名函数
Jun 02 Python
Python自动登录QQ的实现示例
Aug 28 Python
Python使用MapReduce进行简单的销售统计
Apr 22 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 smarty函数扩展
2010/03/15 PHP
php随机显示图片的简单示例
2014/02/15 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
js操作滚动条事件实例
2015/01/29 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
python类参数self使用示例
2014/02/17 Python
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
Python入门教程之运算符与控制流
2016/08/17 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
如何在django中实现分页功能
2020/04/22 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
Python 远程开关机的方法
2020/11/18 Python
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
linux下进程间通信的方式
2013/01/23 面试题
《孔子拜师》教学反思
2014/02/24 职场文书
《识字五》教学反思
2014/03/01 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
三峡大坝导游词
2015/01/31 职场文书
2015年服务员工作总结
2015/04/08 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
赡养老人协议书范本
2015/08/06 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers