Main 함수는 프로그램의 진입점과 같습니다. 그러나 Python 인터프리터는 첫 번째 줄부터 바로 코드를 실행합니다. 코드 실행은 시작 줄부터 시작하여 한 줄씩 진행됩니다. 주요 기능이 어디에 있는지, 존재하는지 여부는 중요하지 않습니다.
없기 때문에main()>Python에서 함수를 사용하면 Python 프로그램을 실행하라는 명령이 인터프리터에 전달되면 들여쓰기 수준 0에 있는 코드가 실행됩니다. 그러나 그 전에 몇 가지 특수 변수를 정의합니다.__name__>그러한 특별한 변수 중 하나입니다. 소스 파일이 메인 프로그램으로 실행되면 인터프리터는__name__>값을 갖는 변수__main__>. 이 파일을 다른 모듈에서 가져오는 경우__name__>모듈 이름으로 설정됩니다.
__name__>현재 모듈의 이름을 평가하는 내장 변수입니다.
예:
# Python program to demonstrate> # main() function> > > print>(>'Hello'>)> > # Defining main function> def> main():> >print>(>'hey there'>)> > > # Using the special variable> # __name__> if> __name__>=>=>'__main__'>:> >main()> |
>
>
산출:
Hello hey there>
위 프로그램이 실행되면 인터프리터는 name의 초기값을 main으로 선언합니다. 인터프리터가 if 문에 도달하면 name 값을 확인하고 if 값이 true이면 기본 기능을 실행하고 그렇지 않으면 기본 기능이 실행되지 않습니다.
모듈로서의 주요 기능
이제 Python 스크립트를 모듈로 가져올 때__name__>변수는 가져온 Python 스크립트의 이름과 동일한 값을 가져옵니다.
base64 자바스크립트 디코드
예: 두 개의 파일(File1.py 및 File2.py)이 있다고 가정해 보겠습니다. File1은 다음과 같습니다.
# File1.py> > print>(>'File1 __name__ = %s'> %>__name__)> > if> __name__>=>=> '__main__'>:> >print>(>'File1 is being run directly'>)> else>:> >print>(>'File1 is being imported'>)> |
>
>
산출:
File1 __name__ = __main__ File1 is being run directly>
이제 File1.py를 File2.py로 가져오면 __name__ 값이 변경됩니다.
# File2.py> > import> File1> > print>(>'File2 __name__ = %s'> %>__name__)> > if> __name__>=>=> '__main__'>:> >print>(>'File2 is being run directly'>)> else>:> >print>(>'File2 is being imported'>)> |
>
네트워크 유형
>
산출:
File1 __name__ = File1 File1 is being imported File2 __name__ = __main__ File2 is being run directly>
위에서 본 것처럼 File1.py를 직접 실행하면 인터프리터가__name__>변수__main__>import를 통해 File2.py를 통해 실행하면 __name__ 변수가 Python 스크립트의 이름, 즉 File1로 설정됩니다. 따라서 __name__ == __main__은 Python File1.py와 같은 명령을 사용하여 명령줄에서 스크립트를 실행할 때 실행되는 프로그램의 일부라고 말할 수 있습니다.