有2个文件:
首先调用:main.py
import side
var = 1
side.todo()
第二个叫做:side.py
import main
def todo():
print "printing variable from MAIN: %s" %(main.var)
当我运行main.py时出错:
AttributeError: 'module' object has no attribute 'todo'
在python中你不允许以这种方式借用和使用变量吗?
我试图搜索与此相关的文档,但找不到与此问题相关的任何内容。
当然,有另一种方法可以做到这一点吗?
答案 0 :(得分:2)
问题是不“你不能进行循环导入”,而在定义之前不能使用名称。将调用移至side.todo()
某处,只要脚本运行就不会发生,或将main.var
移动到第三个模块中。
答案 1 :(得分:0)
一个快速而丑陋的解决方案是将import语句移动到在side.py中需要它之前不会执行的地方
def todo():
import main
print "printing variable from MAIN: %s" %(main.var)
我会建议反对它。这个例子是人为的,但我相信你能找到一个更好的解决你的具体案例的方法。