首页 > 编程语言 > 详细

Python模块的交叉引用问题分析

时间:2014-08-05 23:13:30      阅读:1945      评论:0      收藏:0      [点我收藏+]

实际项目中遇到python模块相互引用问题,查资料,说是通过import局部导入的方式可以避免错误,资料如附录所述。

但更改后测试还是会出错,很疑惑!?


如果哪位读者有好的解决方法,敬请留言说明,谢谢。


所以,最好的方法是不进行交叉引用,如果需要就单独分一个模块出来。



附录:Python模块的交叉引用问题
解读:
How can I have modules that mutually import each other?

有下面两个文件相互引用,Python解释器报错。

foo.py:

from bar import bar_var
foo_var=1

bar.py:

from foo import foo_var
bar_var=2

import foo会产生如下错误:
>>> import foo
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "foo.py", line 1, in ?
    from bar import bar_var
  File "bar.py", line 1, in ?
    from foo import foo_var
ImportError: cannot import name foo_var
>>>

但并非是因为交叉引用而报错,而是引用不存在!
导入一个模块时,发现已经导入,就不会再做一次导入。
from foo import foo_var
相当于运行foo.py, 然后令foo_var = foo.foo_var
这句会发现foo已经导入,但是foo_var=1还没有执行到,
所以bar.foo_var = foo.foo_var就会出错。

解决办法就是不要全局导入,可改为局部作用域内导入。

如果将from XXX import YYY改为import XXX就不会有上述错误了。


引用:http://blog.csdn.net/jq0123/article/details/1527148


本文出自 “敏而好学” 博客,请务必保留此出处http://dangzhiqiang.blog.51cto.com/7961271/1535904

Python模块的交叉引用问题分析,布布扣,bubuko.com

Python模块的交叉引用问题分析

原文:http://dangzhiqiang.blog.51cto.com/7961271/1535904

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!