Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 __name__(특수 변수)


다른 프로그래밍 언어와 달리 python은 기본 함수에서 명시적으로 코드 실행을 시작하도록 설계되지 않았습니다. __name__이라는 특수 변수는 주 함수의 기능을 제공합니다. 파이썬 언어에 내장된 변수이므로 이 변수의 값을 아래와 같이 보는 것만으로 프로그램을 작성할 수 있습니다.

print type(__name__)
print __name__

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

<type 'str'>
__main__

위에서 볼 수 있듯이 __name__ 변수의 값은 문자열 데이터 유형이며 __main__과 같습니다.

다음은 __name__ 변수의 두 가지 주요 기능입니다.

1. 다른 스크립트를 참조하지 않는 잘 작성된 독립형 파이썬 스크립트를 실행할 때 __name__ 변수의 값은 __main__과 같습니다.

standalone.py라는 프로그램을 작성해 보겠습니다. 이 기능을 설명합니다.

def func1():
   print 'The value of __name__ is ' + __name__
if __name__ == '__main__':
   func1()

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

The value of __name__ is __main__

예상대로 __name__ 변수는 __main__으로 평가되므로 출력이 됩니다.

2. 두 번째 기능은 하나의 Python 스크립트를 다른 스크립트로 가져오는 것입니다. 이러한 시나리오에서는 main() 함수로 간주될 수 있는 두 가지 다른 범위가 있는 것 같습니다. 첫 번째 범위는 현재 실행 중인 프로그램의 __main__ 변수이고 두 번째 범위는 현재 프로그램에서 사용되는 가져온 스크립트의 __main__ 변수 범위입니다.

어떤 __main__ 변수가 사용될 것인지

가져온 스크립트에서 함수를 실행할 때 __name__ 변수는 스크립트의 실제 이름으로 평가되며 __main__과 같지 않습니다.

그러나 가져온 스크립트를 참조하지 않고 현재 프로그램에서 name 변수의 값을 찾을 때 예상대로 __main__으로 평가됩니다. 그것이 레벨 0 들여쓰기에서 프로그램의 범위이기 때문입니다.

아래 프로그램은 이 예를 보여줍니다.

import standalone as sa

print('Running the imported script')
sa.func1()

print('\n')
print('Running the current script')
print 'The value of __name__ is ' + __name__

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

Running the imported script
The value of __name__ is standalone

Running the current script
The value of __name__ is __main__

이 접근 방식의 유용성은 코드 if __name__ =="__main__":이 사용될 때 파이썬 인터프리터가 현재 실행된 스크립트를 구문 분석하는지 또는 일시적으로 다른 외부 스크립트를 구문 분석하는지 확인합니다. 이런 식으로 프로그래머는 시나리오에 따라 현재 실행되는 스크립트뿐만 아니라 외부 스크립트에서 코드 행을 실행하도록 선택하여 프로그램의 다른 부분의 동작을 제어할 수 있습니다.