Python의 이중 밑줄
밑줄 (_
)과 이중 밑줄 (__
)은 모두 Python 프로그래밍 세계에서 큰 의미를 가지며 프로그래머가 다른 목적으로 과도하게 사용합니다. 이중 밑줄은 매우 편리하며 Python 코드에서 자주 발생합니다.
이 기사에서는 파이썬에서 이중 밑줄의 의미에 대해 논의 할 것입니다.
Python에서 이중 선행 밑줄 사용
이중 밑줄이 주어진 식별자 (__var
)를 이끄는 경우 해당 특정 식별자에서 이름 맹 글링 프로세스가 발생합니다.
간단히 말해서 이름 맹 글링은 하위 클래스와 이름 충돌을 방지하기 위해 기본적으로 속성 이름을 다시 작성하는 것입니다.
다음 코드를 사용하여 Python에서 이중 선행 밑줄을 설명 할 수 있습니다.
class E1:
def __init__(self):
self.bar = 11
self._baz = 23
self.__foo = 23
x = E1()
print(dir(x))
출력:
['_E1__foo', '__doc__', '__init__', '__module__', '_baz', 'bar']
설명
- 위의 코드에서 우리는 클래스를 가지고 단일 밑줄, 이중 밑줄 및 일반 요소를 비교합니다.
foo
,bar
,baz
요소는 프로그램에 전달 된 조건 또는 프로그램이 수신 한 새 정보에서 변경되는 값에 대한 자리 표시 자로 사용되는 간단한 키워드입니다.- 여기서
dir()
함수는 함수의 인수로 전달 된 주어진 객체의 유효한 속성 목록을 제공하는 데 사용됩니다.
위 코드에서bar
및_baz
변수는 변경되지 않은 것처럼 보이지만__foo
변수는_E1__foo
로 변경되었습니다. 이것은 변수에서 발생하는 이름 엉킴 과정이며, 하위 클래스에서 재정의되지 않도록 변수를 보호하기 위해 수행됩니다.
이중 밑줄로 시작하는 변수의 이름 변경 과정은 프로그래머에게 완전히 투명합니다. 이름 맹 글링은 함수를 포함하여 이중 밑줄로 이어지는 모든 것과 상호 작용하고 변경합니다.
Python에서 이중 선행 및 후행 밑줄 사용
변수가 앞뒤에 이중 밑줄로 둘러싸여 있으면 이름 변경 프로세스가 적용되지 않습니다.
접두사와 접미사로 이중 밑줄로 묶인 변수는 Python 인터프리터에서 무시됩니다.
다음 코드를 사용하여 Python의 이중 선행 및 후행 밑줄을 설명 할 수 있습니다.
class A:
def __init__(self):
self.__foo__ = 10
print(A().__foo__)
출력:
10
위의 코드에서 접두사 및 접미사로 이중 밑줄이있는foo
변수는 인터프리터에 의해 무시되고 이름 맹 글링이 발생하지 않습니다. 이 함수의 값은 출력으로 반환되어 변수가 개체 속성 목록에 있음을 증명합니다.
선행 및 후행 이중 밑줄을 모두 포함하는init
또는call
과 같은 일부 고유 이름은 특수 용도로 Python 언어로 예약되어 있습니다.
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn