파이썬의 언더스코어에 대해서 궁금했었는데, 정말 잘 정리된 블로그 포스트가 있었다. 파이썬 프로그래머라면 알아두어야 할 것 같아서 정리해보기로 하였다.
참고한 포스트를 보고 싶다면?
>> 클릭해주세요 - 파이썬 언더스코어(_)에 대해서
타 언어에서는 _ 는 단지 표기법이거나 변수나 함수의 가독성을 위해서 사용되어지는 반면, 파이썬에서는 특별한 의미를 담고 있다.
크게 5가지의 경우로 사용된다.
파이썬 인터프리터에선 마지막으로 실행된 결과값이 _라는 변수에 저장된다.
> python3
Python 3.9.1 (default, Dec 10 2020, 11:11:14)
[Clang 12.0.0 (clang-1200.0.32.27)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 3333
3333
>>> _
3333
>>>
오.. 신기하다.
# 언패킹시 특정값을 무시
>>> x, _, z = 10, 20, 30
>>> x
10
>>> _
20
>>> z
30
>>>
# 여러개의 값 무시
>>> a, *_, c = 10, 20, 30, 40, 50
>>> a
10
>>> _
[20, 30, 40]
>>> c
50
>>>
# 인덱스 무시
>>> for _ in range(10):
... print('singihada')
...
singihada
singihada
singihada
singihada
singihada
singihada
singihada
singihada
singihada
singihada
>>>
# 특정 위치의 값 무시
for _, val in list_of_tuple:
do_something()
# 이건 어떻게 활용할 수 있는지 모르겠다. 좀 더 찾아보겠습니다.
주로 한 모듈 내부에서만 사용하는 private 클래스/함수/변수/메서드를 선언할 때 사용한다. 로 선언하면 from module import *
에서 **** 로 시작하는 것들은 모두 임포트에서 무시된다.
하지만 Python 에서 진정한 의미의 private 를 지원하지 않고 있기 때문에, 불러오려고 하면 불러올 수 있다.
즉, _ 는 private, __ 는 맹글링인데 맹글링은 클래스간 속성명의 충돌을 방지하기 위한 용도로 사용된다 고 한다.
음.. 어렵다 어려워. 맹글링을 사용해볼 기회가 있으면 좋겠는데.
또한 더블 언더스코어(__)
를 사용한 변수나 메서드는 스페셜 메서드
또는 매직 메서드
라고 하는데, 어떤 특정한 문법적 기능을 제공하거나 특정한 일을 수행한다.
더블 언더스코어를 사용해서 모듈 내부에서 사용하는 private 메서드로 사용한다고 누구한테 말 한 기억이 있는데..
코딩도장 파이썬 다시 한 번 돌려야겠다..
4번 5번은 넘어가자. 필요할 때 분명 다시 볼 날이 있겠지.
여지껏 private 의 명시적 용도로만 사용한다고 알고 있었는데, 다시 한 번 공부가 되었다. 자세한 내용을 보고 싶다면 아래 링크.. 꼭 들어가보도록. 정말 정리가 잘 되어 있습니다.