Python underscore
참고
https://hackernoon.com/understanding-the-underscore-of-python-309d1a029edc
Python 기준 버전 3.6.6
Python underscore
파이썬에서는 _ 을 사용한 변수명 작명, __main__ 과 같은 특이한 변수들을 사용할때 보통 underscore(‘_’) 를 사용하여 표현하고는 합니다.
이런 underscore 를 쓰는 부분을 좀더 찾아봤습니다.
Using Interpreter
인터프리터의 마지막 실행값을 표현할때 사용하곤 합니다.
>>> 10
10
>>> _
10
>>> _ * 3
30
>>> _ * 20
600
다음과 같이 마지막 실행값을 저장하는 변수로써 _ 를 사용하게 됩니다.
Ignore Values
for 문에서 iteration 을 할때 실제로 값이 중요하지 않다던가, 튜플을 순회할때 첫번째 값이 중요하지 않다고 생각할때 asdf, temp 와 같은 변수명 대신 _ 을 사용하게 됩니다.
# unpacking 할때 값을 무시하고 싶을 경우
x, _, y = (1, 2, 3) # x = 1, y = 3
# unpacking 할때 중간 값을 무시하고 싶을 경우, "Extended Unpacking" 라고 불리우며 3.x 버전에서만 지원합니다.
x, *_, y = (1, 2, 3, 4, 5) # x = 1, y = 5
# index 값을 무시하고 싶을 경우
# ex) 다음과 같이 단순 x 번 함수를 호출해주는 경우
for _ in range(10):
do_something()
# tuple 에서 첫번째 값이 필요하지 않을 경우
for _, val in list_of_tuple:
do_something(val)
변수, 함수명 작명에서 규칙으로 지정된 경우
Python 의 Style Guide 인 PEP8에 지정된 명명 규칙으로 사용됩니다.
- _single_leading_underscore
- 일종의 private 과 비슷한 사용법입니다.
- 파이썬은 private 가 없기 때문에 강제로 사용은 할수 있지만 개발자가 외부에서는 사용하지 않는 함수를 만들때 사용됩니다.
- from A import * 시에는 A 에서 _ 으로 시작되는 함수, 클래스는 불러오지 않습니다.
- single_trailing_underscore_
- Python의 int, str, list 와 같은 예약어를 피하기 위하여 사용합니다.
- ex)
list_ = []
- __double_leading_underscore
- mangling 에 사용됩니다.
- 같은 이름의 함수를 오버라이딩 했을 경우 상위 클래스의 값에 접근하기 위하여 사용됩니다.
- __double_leading_and_trailing_underscore__
- “magic” 오브젝트 혹은 유저 namespace 에 존재하는 속성을 의미합니다.
- __init__ 혹은 __name__ 과 같은 속성입니다.
- 유저가 새로 만들어서 쓰지 않습니다. 오로지 문서에 나온 값만 사용합니다.
As Internationalization(i18n)/Localization(l10n) functions
gettext 와 같은 GNU gettext 에서 사용됩니다.
# see official docs : https://docs.python.org/3/library/gettext.html
import gettext
gettext.bindtextdomain('myapplication','/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print(_('This is a translatable string.'))
separate the digits
1000 단위의 구분자를 읽기 쉽게 하기 위해 다음과 같이 1,000 으로 표시할 경우처럼 코드 에서 사용할때 _ 를 사용합니다. 10진수, 16진수 모두 사용 가능합니다.
billion = 1_000_000_000
print(f'5 billion!!! {billion * 5}')