모듈 개체는 다양한 속성을 특징으로 합니다. 속성 이름은 이중 밑줄 __로 접두어와 후단에 고정됩니다. 모듈의 가장 중요한 속성은 __name__입니다. Python이 최상위 실행 코드로 실행 중일 때, 즉 표준 입력, 스크립트 또는 대화형 프롬프트에서 읽을 때 __name__ 속성은 '__main__으로 설정됩니다. '.
>>> __name__ '__main__'
스크립트 내에서도 __name__ 속성 값이 '__main__'으로 설정되어 있음을 알 수 있습니다. 다음 스크립트를 실행합니다.
'module docstring' print ('name of module:',__name__)
출력
name of module: __main__
그러나 가져온 모듈의 경우 이 속성은 Python 스크립트의 이름으로 설정됩니다. hello.py 모듈의 경우
>>> import hello >>> hello.__name__ hello
앞서 보았듯이 __name__의 값은 최상위 모듈에 대해 __main__으로 설정됩니다. 그러나 가져온 모듈의 경우 파일 이름으로 설정됩니다. 다음 스크립트 실행(moduletest.py)
import hello print ('name of top level module:', __name__) print ('name of imported module:', hello.__name__)
출력
name of top level module: __main__ name of imported module: hello
함수를 포함하는 Python 스크립트에는 특정 실행 코드가 있을 수도 있습니다. 따라서 가져오면 코드가 자동으로 실행됩니다. 두 가지 기능이 있는 이 스크립트 messages.py가 있습니다. 실행 부분에서 사용자 입력은 Thanks() 함수에 대한 인수로 제공됩니다.
def welcome(name): print ("Hi {}. Welcome to TutorialsPoint".format(name)) return def thanks(name): print ("Thank you {}. See you again".format(name)) name = input('enter name:') thanks(name)
분명히 message.py를 실행하면 아래와 같이 감사 메시지가 출력됩니다.
enter name:Ajit Thank you Ajit. See you again
아래와 같은 moduletest.py 스크립트가 있습니다.
import messages print ('name of top level module:', __name__) print ('name of imported module:', messages.__name__)
이제 moduletest.py 스크립트를 실행하면 입력 문과 welcome() 호출이 실행되는 것을 알 수 있습니다.
c:\python37>python moduletest.py
출력
enter name:Kishan Thank you Kishan. See you again enter name:milind Hi milind. Welcome to TutorialsPoint
이것은 두 스크립트의 출력입니다. 그러나 메시지 모듈에서 함수를 가져오고 싶지만 그 안에 있는 실행 코드는 가져오지 않습니다.
여기에서 최상위 스크립트의 __name__attribute 값이 __main__이라는 사실이 유용합니다. __name__이 __main__과 같은 경우에만 입력 및 함수 호출 문을 실행하도록 messages.py 스크립트를 변경합니다.
"docstring of messages module" def welcome(name): print ("Hi {}. Welcome to TutorialsPoint".format(name)) return def thanks(name): print ("Thank you {}. See you again".format(name)) if __name__=='__main__': name = input('enter name') thanks(name)
실행할 수 있고 가져올 수 있는 모듈을 원할 때마다 위의 기술을 사용하십시오. moduletest.py는 변경할 필요가 없습니다. 메시지 모듈의 실행 가능한 부분은 지금 실행되지 않습니다.
enter name: milind Hi milind. Welcome to TutorialsPoint
이것은 당신이 messages.py 스크립트를 독립적으로 실행하는 것을 막지 않습니다.