반응형
if __name__ == "__main__"
파이썬 코드를 보다보면 위와 같은 조건문이 자주 등장하시는 것을 볼 수 있습니다. 위 조건문은 현재 코드가 프로그램의 진입점entry point 또는 메인 main 인지를 체크하는 부분입니다.
__name__ 변수
파이썬에서 제공하는 __name__ 변수는 모듈의 이름을 출력해줍니다. 하지만 현재 코드가 프로그램의 진입점 entry point 인 경우에는 __main__이라는 값을 가지게 됩니다. 한번 코드를 통해 확인해봅시다.
# main.py
import external_module
print("It's main.py")
print(__name__)
#external_module.py
print("It's external_module.py")
print(__name__)
__name__ 변수 활용하기
앞서 __name__ 변수를 활용하면 실행되는 모듈의 이름과 엔트리 포인트의 여부를 알 수 있다고 했습니다. 이 정보를 통해서 할 수 있는 것은 대표적으로 엔트리 포인트에서만 특정 코드를 실행하는 경우입니다.
# main.py
import external_module
print(square(10)
#external_module.py
def square(n):
return n*n
print("square(10) :" + square(10))
external_module 부분에 square 함수의 사용법을 출력하는 코드가 있을때 이를 main에서 활용하면 해당 코드도 함께 출력됩니다. 하지만 external_module을 모듈로 사용하는 사람들이 해당 모듈을 사용할때도 해당 코드는 계속 동작하게 됩니다.
그러므로 해당 코드를 모듈로서 사용하지 않을때, 즉 main 함수로 사용할 떄만 해당 코드를 출력하게 만듭니다.
#external_module.py
def square(n):
return n*n
if __name__ == "__main__":
print("square(10) :" + square(10))
다시 main.py를 실행하면 해당 코드가 출력되지 않는 것을 알 수 있습니다. 이렇듯 __name__ 변수는 프로그램의 진입점을 파악하는데 자주 사용하는 변수이므로 꼭 알아두시면 좋겠습니다.
반응형
'Python' 카테고리의 다른 글
[Python] 파이썬으로 mysql 데이터베이스 접근하기 (pymysql 사용법) (0) | 2019.12.18 |
---|---|
[Python] 파이썬에서 __init__.py 의 의미 (0) | 2019.11.25 |
[Python] 파이썬 라이브러리와 프레임워크의 차이 (0) | 2019.11.25 |
[Python] 파이썬 데코레이터 (decorator) (0) | 2019.11.25 |
[Python] 파이썬 모듈의 종류와 사용법 (import) (0) | 2019.11.25 |