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

Jie*_*eng 3 python python-3.x

vm.pymain()脚本(getdata.py)在一个目录中.在getdata.py,我有

import vm
...
x = vm.Something()
Run Code Online (Sandbox Code Playgroud)

然后python抱怨

UnboundLocalError: local variable 'vm' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

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

UPDATE

我发现如果我这样做了

from vm import * 
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*gan 7

在你的main功能中,你有一条线vm = VirtualMemory(args['numFrames'], algo).这样做的结果是Python vm在函数内部识别为局部变量,因此当您尝试访问vm(意味着vm模块)之前,在本地为其分配值之前,它会抱怨您没有为其分配值.

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

(最后一件事:避免使用from X import *语句,它们会使调试变得困难;列出您明确导入的内容.main无论如何,您都不想导入名称.)