반응형
파이썬 코드를 보면 다음과 같은 코드를 자주 보게 됩니다.
if __name__ == "__main__":
__name__이란 모듈(module)의 이름(파일 이름)을 저장하는 파이썬의 내장 변수 입니다.
__main__ 은 최상위 모듈, 즉 현재 실행되는 스크립트를 나타내는 이름입니다. 파일의 이름과 상관없이 제일 처음 실행되는 파일의 모듈 이름은 __main__입니다.
따라서 위의 코드는 모들의 이름이 __main__이면, 즉 if문의 조건이 참(True)이면 if문에 코딩한 내용을 실행하게 됩니다.
즉 현재 스크립트로 실행되는지, 아니면 다름 스크립트의 모듈로 임포트되어 사용되는지를 판단하는 데 사용됩니다.
예제를 통해 자세히 알아 보겠습니다.
# woo.py
def add(a, b):
print('이 함수는 woo모듈의 add함수 입니다.')
return a + b
# __name__ 변수 출력
print('모듈 이름:', __name__)
# 이 모듈이 최상위 모듈이면 add( )함수를 실행
if __name__ == '__main__':
print(add(1, 2))
'''
( 실행 결과 )
$ python woo.py
모듈 이름: __main__
이 함수는 woo모듈의 add함수 입니다.
3
'''
현재 woo.py 모듈만 있고, 따라서 이 모듈이 main이기 때문에 if문 안에 있는 foo( )함수가 실행됩니다.
이제 다른 모듈에서 woo모듈을 호출해서 사용해 보겠습니다.
# boo.py
import woo # woo모듈을 가져 옵니다.
# __name__ 변수 출력
print('모듈 이름:', __name__)
def sub(a, b):
print('이 함수는 boo모듈의 sub함수 입니다.')
return a - b
if __name__ == "__main__": # 이 파일이 시작점일 때만 아래 코드를 실행
print(woo.add(5, 2))
print(sub(5, 2))
'''
( 실행 결과 )
$ python boo.py
모듈 이름: woo
모듈 이름: __main__
이 함수는 woo모듈의 add함수 입니다.
7
이 함수는 boo모듈의 sub함수 입니다.
3
'''
woo.py는 boo.py에 import해서 사용하기 때문에 더이상 __main__이 아닙니다.
따라서 모듈이름 woo가 출력됩니다.
반면 지금 실행한 boo.py는 최상위 모듈이기 때문에 모듈 이름은 __main__으로 출력됩니다.
그리고 if문의 조건이 만족하기 때문에 woo.add( )와 sub( )함수 모두 실행 됩니다.
반응형
'Python' 카테고리의 다른 글
[ Python ] 파이썬에서 main( )함수를 사용하는 이유는 무엇일까? (0) | 2023.12.29 |
---|---|
[ Python ] 파이썬의 문자열을 연결할 때 +와 , 의 차이점 (0) | 2023.12.29 |
[ Python ] 파이썬에서 seek() 메소드 사용하는 방법 (0) | 2023.10.31 |