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__함수 부분이 실행됩니다.
차례대로 선언된 함수들이 실행됩니다.
이 예제를 통해서 두 개 이상의 실행 파일 각각에 __main__이 있더라도
__main__에 작성된 로직에 따라 어떤 파일이 메인 실행코드가 될 수 있는지 알아보았습니다.
반응형
'Python > Python Basic' 카테고리의 다른 글
*args 사용과 예제 - 공부하는 도비 (0) | 2022.12.02 |
---|---|
파이썬 type hinting - 공부하는 도비 (0) | 2022.12.02 |
update()함수로 dictionary 업데이트 하기 - 공부하는 도비 (0) | 2022.11.21 |
버블 정렬 (오름차순 정렬) - 공부하는 도비 (0) | 2022.10.28 |
enumerate 내장 함수로 for문 돌리 - 공부하는 도비 (1) | 2021.12.06 |