打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python模块的交叉引用问题
 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就不会有上述错误了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python中的import指的是什么
Python的未来 future模块
Python程序员最常犯的十个错误
《源码探秘 CPython》48. 名字、作用域、名字空间(下)
Python程序员最常犯的10个错误,你中招了吗?
Python 程序员经常犯的 10 个错误
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服