프로그래밍 PROGRAMMING/파이썬 PYTHON

[PYTHON] 파이썬 언더스코어( _ )의 의미와 용법

매운할라피뇽 2024. 5. 5. 14:10
반응형

파이썬 언더스코어

 

파이썬에서 언더스코어(underscore, _, 혹은 언더바 underbar)는 처음에는 임시 변수를 표현하는데 사용되다가 점점 범위가 넓어져 다양한 경우에 사용되고 있습니다. 크게 파이썬에서의 언더스코어는 크게 아래와 같이 다섯 가지 용법으로 사용됩니다. 

 

마지막으로 실행된 표현식의 결과를 저장

인터프리터에서 마지막으로 실행된 표현식의 결과를 저장하는데 언더스코어가 사용됩니다. 예를 들어, 10+20을 실행하고 _를 입력하면 30을 반환합니다.

>>> 10 + 20
30
>>> _
30

 

값을 사용하지 않을 때

값을 무시하고 싶을 때 사용합니다. 예를 들어, for _ in range(10):는 10번 반복하는데, 반복하는 값 자체에는 관심이 없을 때 사용합니다.

for _ in range(10):
    print("Hello, World!")

 

이 코드를 실행하면, "Hello, World!"가 10번 출력됩니다. 여기서 _는 반복 변수이지만, 이 코드에서는 반복하는 값 자체는 쓰지 않기 때문에 _를 사용하였습니다.

 

숫자 리터럴 값의 가독성을 높이고 싶을 때

숫자 리터럴 값의 가독성을 높이기 위해 사용됩니다. 예를 들어, 1_000_000은 1000000과 동일한 값을 나타내지만 언더스코어(_)를 사용함으로써 가독성이 훨씬 좋습니다.

# 일백만
one_million = 1_000_000

# 십억
ten_billion = 10_000_000_000

print(one_million)
print(ten_billion)

 

이 코드를 실행하면, 언더스코어가 있음에도 one_million은 1000000을, ten_billion은 10000000000을 출력합니다. 이처럼 _를 사용하면 큰 숫자도 가독성이 좋게 표현할 수 있습니다.

 

변수나 함수명에 특별한 의미나 기능을 가지는 경우

언더스코어의 또 다른 용법은 변수나 함수명이 특별한 의미나 기능을 가질 때 사용합니다. 예를 들어, __init__ 함수는 클래스가 인스턴스화될 때 호출되는 초기화 함수입니다.

class MyClass:
    # special method 혹은 magic method라고 불리우는 __init__
    def __init__(self):
        self.value = 10

    # 이중 underscore를 양쪽에 붙여 만든 __special_method
    def __special_method(self):
        return self.value * 2

my_object = MyClass()
print(my_object.__special_method())  # 출력: 20

 

위의 코드에서 MyClass 클래스는 __init__와 __special_method라는 특별한 메소드를 가지고 있습니다. 이들 메소드는 언더스코어(_)를 양쪽에 붙여서 만들어진 메소드로, 파이썬에서 특별한 의미를 가지며 다양한 기능을 수행합니다.  __init__ 메소드는 클래스가 인스턴스화될 때 호출되는 초기화 함수로 클래스 내에서 반드시 필요한 내부 메소드입니다. 

 

변수가 private인 경우

변수가 private인 경우 앞에 언더스코어(_)를 붙입니다. 이것은 파이썬에서 해당 변수나 메서드가 private임을 나타내는 표시입니다.

class MyClass:
    def __init__(self):
        self.__my_private_variable = 10

    def public_method(self):
        print(self.__my_private_variable)

my_object = MyClass()
my_object.public_method()  # 출력: 10

# 클래스 외부에서는 접근이 불가능합니다.
print(my_object.__my_private_variable)  # 오류: 'MyClass' object has no attribute '__my_private_variable'

 

위의 코드에서 MyClass 클래스는 __my_private_variable라는 private 변수를 가지고 있습니다. 이 변수는 클래스 내부에서 사용될 수 있지만, 클래스 외부에서는 접근이 불가능합니다. 이는 파이썬의 네임 맹글링(name mangling) 기능으로, 실제로는 _MyClass__my_private_variable라는 이름으로 저장되며, 이렇게 하면 클래스 외부에서 직접 접근을 통한 수정을 어렵게 만들어, 객체 지향의 캡슐화(encapsulation)를 지원합니다.

 

이처럼 파이썬에서 언더스코어는 다양한 경우에 사용되고 있습니다. 

 

 

 

 

반응형