Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python模块(分配前引用的modulename)_Python_Python 3.x - Fatal编程技术网

Python模块(分配前引用的modulename)

Python模块(分配前引用的modulename),python,python-3.x,Python,Python 3.x,我在与main()脚本(getdata.py)相同的目录中有一个vm.py)。在getdata.py中,我有 import vm ... x = vm.Something() 然后python抱怨 UnboundLocalError: local variable 'vm' referenced before assignment 为什么呢?导入时没有错误 更新 我发现如果我这样做了 from vm import * 相反,它起了作用。同样对于我制作的另一个文件/模块,一个简单的导入也可

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

import vm
...
x = vm.Something()
然后python抱怨

UnboundLocalError: local variable 'vm' referenced before assignment
为什么呢?导入时没有错误

更新

我发现如果我这样做了

from vm import * 

相反,它起了作用。同样对于我制作的另一个文件/模块,一个简单的
导入
也可以工作。我将完整的代码上传到GitHub Gist

在您的
main
函数中,有一行
vm=VirtualMemory(args['numFrames',algo)
。这样做的结果是Python将
vm
识别为函数内部的局部变量,因此当您尝试访问
vm
(即
vm
模块)时,在本地为其赋值之前,它会抱怨您没有为其赋值

结果是,您应该将变量
vm
或模块
vm
重命名为其他名称


(最后一件事:避免使用
from X import*
语句,因为它们会使调试变得困难;请明确列出您要导入的内容。无论如何,您不希望导入像
main
这样的名称。)

本身就可以了。可能在您的代码中还有其他对vm的引用,您在
部分中删除了这些引用,因为您认为它们不相关,但实际上它们是相关的。例如,请参阅或。@DSM,在camel情况下,使用gist()命令行参数的观察结果和完整代码更新post
--numReferences
通常作为
--num references
--references
@ChrisMorgan执行,谢谢您让我知道:)