Python 인터프리터는 소스 파일을 읽을 때 그 안에 있는 모든 코드를 실행합니다.
코드를 실행하기 전에 몇 가지 특수 변수를 정의합니다. 예를 들어, 파이썬 인터프리터가 해당 모듈(소스 파일)을 메인 프로그램으로 실행하는 경우 특수 __name__ 변수가 "__main__" 값을 갖도록 설정합니다. 이 파일을 다른 모듈에서 가져오는 경우 __name__이 모듈 이름으로 설정됩니다.
이렇게 하는 한 가지 이유는 때때로 직접 실행할 수 있는 모듈(.py 파일)을 작성하기 때문입니다. 또는 다른 모듈에서 가져와서 사용할 수도 있습니다. 주요 검사를 수행하면 해당 코드가 모듈을 프로그램으로 실행하고 싶을 때만 실행되고 누군가가 모듈을 가져와서 함수 자체를 호출하려고 할 때 실행하지 않도록 할 수 있습니다.
예를 들어 다음 코드가 있는 one.py 및 two.py 파일이 2개 있는 경우:
one.py:
def func(): print("func() in one.py") print("Root of one.py") if __name__ == "__main__": print("one.py is being run directly") else: print("one.py is being imported")
Two.py:
import one print("Root of two.py") one.func() if __name__ == "__main__": print("two.py is being run directly") else: print("two.py is being imported")
이제 달리면
$ python one.py
다음과 같은 결과를 얻을 수 있습니다.
Root of one.py one.py is being run directly
하지만 달리면
$ python two.py
다음과 같은 결과를 얻을 수 있습니다.
Root of in one.py one.py is being imported Root of in two.py func() in one.py two.py is being run directly