python循环引用的解决办法
原文地址:http://blog.csdn.net/handsomekang/article/details/19010407
在python中常常会遇到循环import即circular import的问题。
现实中经常出现这种滑稽的情况,
安装无线网卡的时候,需要上网下载网卡驱动..
安装压缩软件的时候,从网上下载的压缩软件安装程序居然是被压缩了的..
循环依赖就类似于这种情况。
举个栗子,
在models.py中,
- from server import db
- class User(db.Model):
- pass
在server.py中,
- from flask import Flask
- from flask.ext.sqlalchemy import SQLAlchemy
- app = Flask(__name__)
- app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:tmp/test.db'
- db = SQLAlchemy(app)
- from models import User
这样就产生了循环import的问题。
解决循环import的方法主要有几种。
1.延迟导入(lazy import)
即把import语句写在方法或函数里面,将它的作用域限制在局部。
这种方法的缺点就是会有性能问题。
2.将from xxx import yyy改成import xxx;xxx.yyy来访问的形式
3.组织代码
出现循环import的问题往往意味着代码的布局有问题。
可以合并或者分离竞争资源。
- 合并的话就是都写到一个文件里面去。
- 分离的话就是把需要import的资源
python循环引用的解决办法相关推荐
- python 循环引用的解决方法
目录 1.问题描述 2.原因 3.示例 4.解决办法 1.问题描述 编写python代码,运行中出现了:'most likely due to a circular import ' 这样的报错. ...
- Spring IOC 容器源码分析 - 循环依赖的解决办法
1. 简介 本文,我们来看一下 Spring 是如何解决循环依赖问题的.在本篇文章中,我会首先向大家介绍一下什么是循环依赖.然后,进入源码分析阶段.为了更好的说明 Spring 解决循环依赖的办法,我 ...
- Python编码错误的解决办法SyntaxError: Non-ASCII character ‘\xe5‘ in file
Python编码错误的解决办法SyntaxError: Non-ASCII character '\xe5' in file [现象] 在编写Python时,当使用中文输出或注释时运行脚本,会提示错 ...
- eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法
eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法 当使用eclipse导入外部的web工程时,有时会提示HttpServletRequest, Ser ...
- python垃圾回收 循环引用_在做 Python 循环引用垃圾回收实验中的一个小问题, Python3 的 print 是线程安全的吗?...
以前都听说 Python 循环引用会导致引用数无法清零,所以不能垃圾回收,会内存泄漏,需要删除引用关系或者用 gc.collect()才能进行正常垃圾回收. 但做了下实验,好像还是会自动回收循环引用的 ...
- python报错及解决办法汇总
python报错及解决办法汇总 matplotlib 'gbk' codec can't decode byte 0x9a in position 37: illegal multibyte sequ ...
- php 解决循环引用,excel循环引用如何解决
excel循环引用如何解决? 方法一 需要找到"excel选项",这个地方在Office 2003版本里的"工具"选项里,而在Office 2007版本里不好找 ...
- python循环引用解决 cannot import partially initialize
文章目录 1. 问题 2. 程序结构 3. 健康的引用关系 1. 问题 在python项目中,通常我们要将功能划分为多个文件, 可能出现一些,各模块需要一些公共的值.实例,同时相互存在循环引用的问题. ...
- 解决用户控件循环引用的笨办法
在上一篇中提到使用MagicAjax开发了一个项目,因为做这个项目之前对MagicAjax不是很了解,在里面使用了用户控件,我发现这是一个很致命的错误,用户控件在MagicAjax中用起来很痛苦. ...
最新文章
- make时候说找不到makefile_找不到答案的时候,就去看一看这个世界
- Qtum量子链研究院:Plasma扩容方案详解(上)
- mex文件用matlab能打开吗,matlab中mex文件编译运行的问题
- juypter 不省略_常用pandas清洗数据命令
- Android使用Glide框架加载网络图片(解决无报错图片不显示问题)
- mssql 动态行转列。
- Linux /etc/login.defs配置文件
- 2020年上海将初步建成“泛在化、融合化、智敏化”智慧城市
- 锐起无盘服务器只能是什么系统,安装锐起无盘客户机系统要注意什么
- 传统制造业和工业如何和大数据进行结合
- 技嘉ide模式怎么改_技嘉主板bios设置ide
- RNA 3. SCI 文章中基于TCGA 差异表达基因之 DESeq2
- three.js 05-04 之 BoxGeometry 几何体
- c语言写街机,19年了!街机模拟器MAME正式成为开源软件
- pattern和match的用法 java篇
- CYK 算法 Python 实现
- 研究开源项目发现的一个人性化的Go语言库
- DELL笔记本BIOS密码破解
- Oracle学生表练习
- 洛谷B2075 幂的末尾(解决pow数据爆炸,取后n位,不足补零)
热门文章
- 判断点是否在图形(矩形、椭圆、多边形)内的算法(一)
- 使用woo 语言开发 sockets4 sockets5 http https代理完整记录
- 计算机中丟失Slc.dll,调试符号不会加载slc.dll和sppc.dll
- python基础教程学习笔记 —字符串
- 逻辑回归LR模型简介
- MOOS-ivp 使用qt创建一个moosapp
- Cisco ASA、FTD和HyperFlex HX的漏洞分析复现
- 目标检测中的数据增强,包括bbox的变换
- java中0是真是假_为什么0为假?
- 整理总结:《量化交易——如何建立自己的算法交易事业》