Python의 이중 밑줄

Vaibhhav Khetarpal 2023년1월30일
  1. Python에서 이중 선행 밑줄 사용
  2. Python에서 이중 선행 및 후행 밑줄 사용
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 Khetarpal avatar Vaibhhav Khetarpal avatar

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

관련 문장 - Python Syntax