-2

저는 파이썬 모듈을 직접 사용해보고자합니다.python __name__ 전역 변수가 예상보다 다른 출력을합니다.

내 코드는이

내가 통역으로 코드를 실행하고
#filename:module.py 
def printname(): 
    print __name__ 

printname() 

python module.py 

그것은 출력을 제공합니다 (같은 즉, 모듈 이름)

main 

때 내가 가져 모듈을 다른 파일에 저장하고 모듈을 호출하면 출력이 모듈 이름 (예상)으로 제공됩니다.

module 

docs에 따르면, 출력 같은 모듈 이름을 제공한다. 왜 출력의 변화가 있습니까 ??

+0

또한 docs에 따르면 https://docs.python.org/2/tutorial/modules.html?highlight=__name__#executing-modules-as-scripts – deceze

답변

2

메인 스크립트는 입니다.__main__입니다. 이것은 완전히 올바른 동작입니다.

당신이 링크 된 바로 그 페이지에서

preceding Executing modules as scripts section에서 , 당신은 찾을 수 있습니다 :

당신이 될 것입니다

python fibo.py <arguments> 

과 모듈의 코드를 파이썬 모듈을 실행하면 가져온 것처럼 실행되지만 __name__"__main__"으로 설정됩니다.

모든 것을 위해 당신은, __name__ 그것이 처음 사용하는 아래의 모듈 이름을 반영 가져 . 스크립트 이름이 파이썬 파일을 직접 참조하는 경우

<script>

[...]

가 해당 파일이 들어있는 디렉토리에 추가됩니다

는 또한 Interface options documentation 참조 sys.path의 시작 부분이며 파일은 __main__ 모듈로 실행됩니다.

__main__ Top-level script environment documentation :

이 모듈은 인터프리터의 주 프로그램이 실행하는 (그렇지 않으면 익명) 범위를 나타냅니다 - 명령은 표준 입력에서, 스크립트 파일에서, 또는 대화 형 프롬프트에서 중 읽기 .

관련 문제