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

我在与main()脚本相同的目录中有一个vm.py(getdata.py).在getdata.py中,我有

import vm
...
x = vm.Something()

然后python抱怨

UnboundLocalError: local variable 'vm' referenced before assignment

这是为什么?导入时没有错误.

UPDATE

我发现如果我这样做了

from vm import * 

相反,它奏效了.对于我制作的另一个文件/模块,一个简单的导入工作.我将完整代码上传到GitHub Gist https://gist.github.com/2259298

最佳答案 在你的主要功能中,你有一行vm = VirtualMemory(args [‘numFrames’],algo).这样做的结果是Python将vm识别为函数内部的局部变量,因此当您尝试访问vm(意味着vm模块)时,在向本地分配值之前,它会抱怨您没有赋值它.

它的结果是你应该将你的变量vm或你的模块vm重命名为其他东西.

(最后一件事:避免使用X import *语句,它们会使调试变得困难;列出你明确导入的内容.你不想导入像main这样的名字.)

点赞