我在vm.py
脚本(main()
)所在的目录中有一个getdata.py
。在getdata.py
,我有
import vm
...
x = vm.Something()
然后python抱怨
UnboundLocalError: local variable 'vm' referenced before assignment
为什么?导入时没有错误。
更新
我发现如果我做了
from vm import *
相反,它有效。对于我制作的另一个文件/模块,一个简单的import
也可以。我将完整代码上传到GitHub Gist https://gist.github.com/2259298
答案 0 :(得分:7)
在main
功能中,您有一行vm = VirtualMemory(args['numFrames'], algo)
。结果是Python将vm
识别为函数内部的局部变量,因此当您尝试访问vm
时,意味着vm
模块,然后为其分配值在本地,它抱怨你没有为它分配值。
结果是你应该将变量vm
或模块vm
重命名为其他内容。
(最后一件事:避免使用from X import *
语句,他们会进行调试;列出你明确导入的内容。无论如何,你不想导入像main
这样的名字。)