2012-03-31 7 views
3

main() 스크립트 (getdata.py)와 동일한 디렉토리에 vm.py이 있습니다. getdata.py, 나는 Python 모듈 (할당 전에 모듈 이름 참조)

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

그런 다음 파이썬은
UnboundLocalError: local variable 'vm' referenced before assignment 

왜 즉

불평이? 가져올 때 오류가 없습니다.

UPDATE 나는 내가 한 경우

from vm import * 

가 대신이 일 것을 발견했다. 또한 내가 만든 다른 파일/모듈의 경우 간단하게 import이 작동합니다. GitHub Gist에 전체 코드를 업로드했습니다. https://gist.github.com/2259298

+1

, 그 작동합니다. 아마도 여러분의 코드에서 VM과 관련된 다른 참조 사항이있을 수 있습니다. 왜냐하면 당신이'...'부분을 잘라낸 부분은 관련성이 있다고 생각하지 않았기 때문입니다. 예를 들어 [이 질문] (http://stackoverflow.com/questions/1188944/reason-for-unintuitive-unboundlocalerror-behaviour) 또는 [this one] (http://stackoverflow.com/questions/404534/)를 참조하십시오. python-globals-locals-and-unboundlocalerror). – DSM

+0

@DSM, 요지 및 오류 코드 (https://gist.github.com/2259298)의 전체 코드 –

+0

낙타의 경우 명령 줄 인수가 절대 사용되지 않습니다. '--numReferences'는 일반적으로'--num-references' 또는'--references'로 수행됩니다. –

답변

6

main 함수 안에는 vm = VirtualMemory(args['numFrames'], algo)이라는 줄이있었습니다. 결과적으로 파이썬은 함수 내에서 로컬 변수로 vm을 인식하므로, 로컬로 값을 할당하기 전에 vm 모듈 (vm 모듈)에 액세스하려고하면 값을 할당하지 않았다고 불평합니다 그것에.

변수의 이름을 vm 또는 모듈 vm으로 변경해야합니다.

(마지막 한가지는 : 그들이 열심히 디버깅 확인 from X import * 문을 방지, 당신은 어쨌든, main 같은 이름을 가져 오지 않으려는 당신이 명시 적으로 가져 오는 목록..) 그 자체에 의해