파이썬을 배워가다 보면 각종 튜토리얼에서 보여주는 파이썬 스크립트, 또는 어딘가에서 긁어 온 예제 스크립트, 각종 라이브러리의 소스 파일들 모두에서 자주 보이는 if문이 있다.
대부분의 파이썬 스크립트들이 아래와 같은 형태를 띠고 있는데, 필자는 이에 대해 모르고 처음 접했을 때 무슨 뜻인지 도무지 짐작조차 되지 않았던 기억이 있다.
import ...
def functionname():
...
def functionname2():
...
def main():
functionname()
functionname2()
if __name__ == "__main__":
main()
if __name__ == "__main__" 부분을 이해하기 쉽게 말로 표현하자면, "이 파이썬 스크립트가 직접 실행될 때에는 main() 함수를 실행하라"는 뜻이다.
파이썬 스크립트가 직접 실행되지 않을 때는 무엇을 말하는가? 자주 보았겠지만, 다른 스크립트에서 import되는 경우이다.
따라서 위 말을 조금 바꿔 말하면, "이 파이썬 스크립트가 직접 실행될 때에만 main() 함수를 실행하고, 다른 스크립트에서 import될 때에는 실행하지 말라"는 뜻이다.
일단 위의 if문이 왜 저런 뜻이 되는지부터 보자.
아마 파이썬 코드를 짜면서 __name__이라는 변수를 선언해본 적은 없을 것이다. 그러나 따로 선언하지 않더라도 파이썬 스크립트를 직접 실행하거나 import할 때에는 자동으로 __name__ 변수가 선언된다.
위의 if문은 이러한 사실에 따라 만들어지는 것인데, 파이썬 스크립트가 직접 실행될 때에는 __name__ 변수가 "__main__"이 된다. 그렇기 때문에 if __name__ == "__main__" 이라는 구문이 "이 스크립트가 직접 실행될 때에는..."이 되는 것이다.
그렇다면 다른 스크립트에서 import될 때에는 __name__변수가 무엇이 될까?
어쩌면 당연하게도, 해당 스크립트의 파일명이 __name__변수가 된다.
이에 대해 간단히 확인해보자.
example.py 파일에 print(__name__)만 입력한 다음에 해당 파일을 실행해보면 __main__이 출력될 것이다. 파일을 만들지 않고 터미널에서 python을 입력해 대화형 모드로 진입한 다음에 위 코드를 입력해도 결과는 같다.
이번에는 위 example.py를 다른 스크립트에서 import한 다음에 print(example.__name__)을 입력하고, 해당 파일을 실행해보면 example이 출력될 것이다.
솔직히 필자는 모듈을 따로 만들고 다른 데에서 import해야할 정도로 복잡한 프로그램을 만들지 않기 때문에, 이와 같은 if문은 거의 사용하고 있지 않다.
아마 이 글을 찾아 보고 있는 독자도 마찬가지일 것이다.
그래도 언젠가는 모듈을 만들고, 패키지를 만들어야 하는 때가 올지도 모르니 일단 알아두고 넘어가면 좋을 것이다.
'코딩 > Python' 카테고리의 다른 글
파이썬으로 공공데이터포털(data.go.kr) 오픈 API 활용하기 예제/국세청 사업자등록 상태 조회 (1) | 2021.12.29 |
---|---|
for 반복문을 이용해 전역 변수(global variable) 여러 개를 한번에 선언하는 방법 (0) | 2021.12.27 |
스마트폰에서 파이썬(Python) 코딩 및 주피터노트북 사용하는 방법/termux, 태블릿, 안드로이드 (0) | 2021.12.11 |
삼성인터넷(안드로이드) 업데이트 후 주피터노트북 커널 연결 오류 발생시 해결법 (0) | 2021.11.29 |
회사에서 pip install 오류날 때(SSLCertVerificationError) (0) | 2021.11.26 |
댓글