logo

__name__(파이썬)

현재 실행 중인 Python 스크립트 또는 모듈의 이름은 Python의 __name__ 특수 변수에 저장됩니다. Python 3.0에는 Python 2.x에는 없는 __name__ 변수가 도입되었습니다. 현재 Python 스크립트 또는 모듈의 값인 __main__은 실행되는 동안 __name__ 변수에 할당됩니다.

_name_은(는) 무슨 뜻인가요?

Python에는 현재 실행 중인 스크립트나 모듈의 이름을 저장하는 __name__이라는 내장 변수가 있습니다. 스크립트 또는 모듈 이름은 현재 모듈이 실행 중이 아닌 한 __name__ 변수에 저장되며, 이 경우 __main__ 값이 할당됩니다.

결과적으로 Python 스크립트가 실행될 때 해당 __name__ 변수의 값을 다른 Python 스크립트로 가져오는 경우 항상 __main__이어야 합니다. 그렇지 않은 경우 모듈 이름이 나타납니다.

예 :

이를 더 자세히 이해하기 위해 예를 들어 보겠습니다. 을 만들다 test.py라는 Python 스크립트, 다음 코드를 추가합니다.

 # Code to define a function def anything(): print('Value of the __name__ : ', __name__) anything() 

산출:

CSS 굵게
 Value of the __name__ : __main__ 

설명:

'이름 값: main' 출력에 표시된 대로 스크립트는 기본 프로그램으로 즉시 실행됩니다. Python에서는 스크립트를 직접 실행하면 스크립트의 __name__ 변수 값이 자동으로 '__main__'으로 설정됩니다. 이 출력은 스크립트가 다른 스크립트에 모듈로 가져오기보다는 직접 실행되고 있음을 확인합니다.

이제 다음이라는 또 다른 Python 스크립트를 작성해 보겠습니다. mains.py 이전 항목을 가져옵니다.

예 :

 # importing testing.py import testing testing.anything() 

산출:

 Value of the __name__ : testing 

설명:

테스트. everything()은 가져오기 테스트를 사용하여 test.py 스크립트를 다른 Python 스크립트로 가져올 때 실행되는 메서드입니다. 이 상황에서는 모듈 이름(이 경우 'testing')이 '__main__'이 아닌 test.py의 __name__ 변수 값으로 설정됩니다. 이러한 이유로 테스트 결과가 나왔습니다. everything()은 '__name__의 값: 테스트'입니다. 이는 스크립트를 직접 실행하는 것과 모듈로 가져오는 것이 __name__ 변수의 값에 어떤 영향을 미치는지 보여줍니다.

name == main인 경우 조건 사용:

우리는 if 문 그리고 조건 __이름__ == __메인__ 그것을 선언하기 위해 특정 Python 코드 이어야 한다 스크립트가 직접 실행될 때 수행됨 .

인터넷을 사용하여

예 :

 # importing testing.py import testing if __name__ == __main__: testing.anything() 

이 경우 현재 모듈이나 스크립트의 독립적 실행 능력은 __main__ 문자열을 사용하여 확인됩니다. __name__ 변수의 키워드가 예약되어 있거나 특별하다는 것을 Python 인터프리터에 나타내기 위해 용어 양쪽에 두 개의 밑줄이 있습니다.

정규식 자바

Python의 이름에 대한 코드 예:

앞서 말했듯이 코드 파일을 실행하면 코드가 직접 수행됩니다. 심지어 다른 파일로 가져오지도 않고 결과적으로 __name__ 변수의 값이 __main__으로 변경됩니다.

 # defining a function def anything(): print('It is a function in the ScriptP1.') if __name__=='__main__': anything() print('Called from the ScriptP1.') else: print('ScriptP1 is imported into another file.') 

산출:

 It is a function in the ScriptP1. Called from the ScriptP1. 

설명:

'It is a function in the ScriptP1' 출력에 표시된 것처럼 ScriptP1 스크립트에 지정된 any() 함수가 기본 프로그램으로 직접 실행되고 있습니다. 그 다음에는 'ScriptP1에서 호출됨'이 나옵니다. 스크립트가 Python에서 직접 실행되면 __name__ 변수는 '__main__'으로 설정됩니다. 결과적으로 if __name__=='__main__': 조건은 True로 평가되어 any() 함수를 호출합니다. 다음의 print 문은 스크립트가 실제로 직접 실행되고 있는지 확인합니다.

이제 ScriptP2.py라는 새로운 Python 스크립트 파일을 만들고, ScriptP1.py를 그 파일로 가져온 다음, ScriptP1 메서드인 any()를 호출해 보겠습니다.

코드: 그만큼 ScriptP2.py 코드는 여기에 제공됩니다:

 import ScriptP1 if __name__=='__main__': ScriptP1.anything() print('Called from the ScriptP2.') 

산출:

문자열 비교 자바
 ScriptP1 is imported into another file. It is a function in the ScriptP1. Called from the ScriptP2. 

설명:

제공된 Python 스크립트는 'ScriptP1' 모듈을 활성 스크립트로 가져오는 방법을 보여줍니다. 'anything()' 메소드는 'ScriptP1'에 존재하며, 메인 스크립트에서 호출됩니다. 이 함수가 호출되고 스크립트는 'Called from the ScriptP2'를 출력합니다. 함수 호출이 완료되었음을 나타냅니다. 이 이벤트 흐름은 'ScriptP1'에 지정된 기능이 현재 실행 중인 스크립트('ScriptP2'로 식별됨)의 컨텍스트에서 액세스 가능하고 성공적으로 수행되었음을 나타냅니다.

ScriptP1에 대한 import 문이 ScriptP2 내에서 실행되면 __name__ 변수의 값은 ScriptP1(모듈 이름)이었습니다. 그러나 ScriptP2는 실행된 첫 번째 스크립트이므로 이제 값은 __main__입니다.

__name__ 값 인쇄하기:

이해를 돕기 위해 각 실행 단계에서 __name__ 변수의 값을 인쇄해 보겠습니다.

예 : ScriptP1.py Python 스크립트의 소스 코드는 다음과 같습니다.

스프링 프레임워크
 print('Value or the variable __name__ : ' + __name__) 

산출:

 Value or the variable __name__ : __main__ 

설명:

제공된 Python 코드 샘플은 스크립트가 직접 실행될 때 'main'으로 평가되는 변수 __name__의 값을 출력합니다. 이는 스크립트가 직접 실행되면 if __name__ == '__main__': 조건 뒤에 오는 코드 블록이 다른 스크립트에 모듈로 가져오기보다는 실행된다는 의미입니다. 이러한 종류의 동작은 스크립트를 기본 애플리케이션으로 실행하는 것과 이를 다른 스크립트에 모듈로 가져오는 것을 구별하는 데 자주 사용됩니다.

예시 2: 다음은 ScriptP2.py 스크립트의 소스 코드입니다.

 # importing the file ScriptP1.py import ScriptP1 print('Value or the variable __name__ : ' + __name__) 

산출:

 Value or the variable __name__ : __main__ 

설명:

제공된 Python 스크립트는 import 문을 사용하여 'ScriptP1.py' 파일을 가져옵니다. ' 실행되면 'main'이 변수 __name__의 값으로 출력됩니다. 이는 다른 스크립트에 모듈로 가져오는 대신 스크립트가 기본 애플리케이션으로 직접 실행된다는 의미입니다. Python 스크립트를 실행할 때 이는 일반적인 동작입니다. 스크립트의 실행 컨텍스트는 __name__ 변수에 반영됩니다.

요약 :

대부분의 프로그래밍 언어에서 주요 메소드나 함수는 일반적으로 프로그램이 수행되는 지점으로 활용됩니다. 하지만 파이썬은 어떻습니까? Python 프로그램(스크립트)의 실행은 일반적으로 라인 0 또는 프로그램의 들여쓰기 수준 0에서 시작됩니다. 그러나 __name__ 변수 생성은 Python 프로그램이 실행되기 전에 발생합니다. 이 변수는 Python의 기본 메서드를 대체하는 데 사용될 수 있습니다.