Python 메인 함수

파이썬 메인 함수는 파이썬 프로그램으로 실행될 때에만 실행됩니다. 알다시피, 우리는 또한 파이썬 프로그램을 모듈로 import할 수 있습니다. 이 경우에는 파이썬 메인 메소드가 실행되지 않아야 합니다.

파이썬 메인 함수

메인 함수는 모든 프로그램의 진입점입니다. 그러나 파이썬 인터프리터는 소스 파일 코드를 순차적으로 실행하며 코드의 일부가 아닌 경우에는 어떤 메소드도 호출하지 않습니다. 그러나 코드의 일부로 직접 포함된 경우에는 파일이 모듈로 가져와질 때 실행됩니다. 이것이 파이썬 프로그램에서 메인 메소드를 정의하는 특별한 기술이 있는 이유이며, 이렇게 함으로써 프로그램이 직접 실행될 때에만 실행되고 모듈로 가져올 때에는 실행되지 않습니다. 간단한 프로그램에서 파이썬 메인 함수를 어떻게 정의하는지 살펴보겠습니다. python_main_function.py

print("Hello")

print("__name__ value: ", __name__)


def main():
    print("python main function")


if __name__ == '__main__':
    main()
  • 파이썬 프로그램이 실행되면, 파이썬 인터프리터는 그 내부의 코드를 실행하기 시작합니다. 또한 몇 가지 암시적 변수 값을 설정하는데, 그 중 하나는 __name__이며 그 값은 __main__으로 설정됩니다.

  • 파이썬의 주요 함수에 대해선 함수를 정의하고, 그 후 if __name__ == '__main__' 조건을 사용하여 이 함수를 실행해야 합니다.

  • 만약 파이썬 소스 파일이 모듈로 가져와진다면, 파이썬 인터프리터는 __name__ 값을 모듈 이름으로 설정하므로 if 조건은 false를 반환하고 주요 메소드가 실행되지 않습니다.

  • 파이썬은 주요 메소드에 어떤 이름이든 부여할 수 있도록 유연성을 제공하지만, 이를 main() 메소드로 명명하는 것이 권장되는 모범 사례입니다. 아래 코드는 완벽하게 동작하지만 권장되지 않습니다.

    def main1():
        print("파이썬 주요 함수")
    
    
    if __name__ == '__main__':
        main1()
    

아래 이미지는 python_main_function.py를 소스 파일로 실행했을 때의 출력을 보여줍니다.

Python 주요 함수를 모듈로

이제 위의 파이썬 소스 파일을 모듈로 사용하고 다른 프로그램에서 가져와보겠습니다. python_import.py

import python_main_function

print("Done")

이제 위의 프로그램을 실행하면 아래 출력이 생성됩니다.

Hello
__name__ value:  python_main_function
Done

python_main_function.py 소스 파일에서 처음 두 줄이 인쇄되는 것을 주목하세요. __name__의 값이 다르고 따라서 main 메소드가 실행되지 않습니다. 파이썬 프로그램 문장은 한 줄씩 실행되기 때문에 main() 메소드를 if 조건보다 먼저 정의하는 것이 중요합니다. 그렇지 않으면 NameError: name 'main' is not defined과 같은 오류가 발생합니다. 이것이 파이썬 주요 함수에 대한 전부입니다. 참고: Python 문서

Source:
https://www.digitalocean.com/community/tutorials/python-main-function