Python/Python Basic
if __name__=='__main__': - 공부하는 도비
DOVISH WISDOM
2022. 11. 21. 19:12
728x90
반응형
파이썬은 작성한 코드가 위에서 아래로 한 줄씩 해석되어 실행 결과를 내놓는 인터프리터 언어입니다.
반면, C나 C++ 같은 컴파일 프로그래밍 언어는 시작점이 항상 main() 함수입니다.
파이썬의 경우, main() 함수 역할을 하는 것은 다음과 같습니다.
(편의를 위해 __main__으로 표현하겠습니다.)
if __name__ == '__main__':
파이썬은 소스코드를 실행할 때, 위와 같은 코드가 있으면 작성된 코드의 순서와 상관없이 저 함수 안에 작성된 코드를 먼저 실행합니다.
파이썬의 __main__함수와 C/C++의 main() 함수,
두 가지의 가장 큰 차이는
파이썬의 main은 파이썬 소스코드 파일 별로 하나씩 있을 수 있지만, C/C++의 main은 프로그램을 구성하는 소스코드 전반에 걸쳐 단 하나만 있어야 합니다.
이 말은 다음 예제로 쉽게 이해할 수 있습니다.
위 그림 처럼 두 개의 소스 파일을 선언하고, 각각 __main__ 함수를 선언해줍니다.
두 파일 모두 독립적으로 실행 가능한 걸 알 수 있습니다.
Cal_Sub.py, Cal_Add.py에 있는 __main__에 작성된 코드에 따라,
Cal_Sub.py가 메인 실행코드가 될 수도 있고, Cal_Add.py가 메인 실행 코드가 될 수 있습니다.
위의 코드를 수정해서 __main__이 어떤 절차로 실행되는지 더 자세하게 알아보겠습니다.
__main__을 선언할때 if를 사용하는데 if가 있다면, else도 있겠죠?
if와 else를 가지고 코드를 수정해줍니다.
* Cal_Add.py 수정
# Cal_Add.py
import Cal_Sub
def Add(a, b):
print("Cal_Add' result : ", a + b)
if __name__=="__main__":
print("Cal_Add.py에 있는 main함수가 찐 main")
a = 30
b = 20
Cal_Sub.Sub(a, b)
Add(a, b)
else:
print("Cal_Add.py가 다른 파일에서 임포트되어 사용됨")
* Cal_Sub.py 수정
# Cal_Sub.py
# Cal_Add를 import하지 않음
def Sub(a, b):
print("Cal_Sub' result : ", a - b)
if __name__=="__main__":
print("Cal_Sub.py에 있는 main함수가 찐 main")
a = 30
b = 20
Sub(a, b)
else:
print("Cal_Sub.py가 다른 파일에서 임포트되어 사용됨")
이렇게 수정된 코드를 가지고 Cal_Add.py를 실행시켜 보면, 아래와 같은 결과를 얻을 수 있습니다.
Cal_Add.py를 실행시키면, 우선 import 된 Cal_Sub 파일을 확인합니다.
Cal_Sub.py의 __main__은 메인 실행 코드가 아니기 때문에, else 절이 출력된 걸 볼 수 있습니다.
다음은 메인 실행 파일(Cal_Add.py)의 __main__함수 부분이 실행됩니다.
차례대로 선언된 함수들이 실행됩니다.