Python模块(在赋值之前引用的模块名称)

时间:2012-03-31 03:54:29

标签: python python-3.x

我在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

1 个答案:

答案 0 :(得分:7)

main功能中,您有一行vm = VirtualMemory(args['numFrames'], algo)。结果是Python将vm识别为函数内部的局部变量,因此当您尝试访问vm时,意味着vm模块,然后为其分配值在本地,它抱怨你没有为它分配值。

结果是你应该将变量vm或模块vm重命名为其他内容。

(最后一件事:避免使用from X import *语句,他们会进行调试;列出你明确导入的内容。无论如何,你不想导入像main这样的名字。)

相关问题