[Python] 언더스코어(_) - Suja-dot/Programming_Language GitHub Wiki
Python 에서 Underscore(_)를 사용하는 경우
1. 인터프리터(Interpreter)에서 마지막 값을 저장할때
- Python Interpreter에서는 마지막으로 실행된 결과값이 _라는 변수에 저장됨
Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 10
10
>>> _
10
>>> _ * 3
30
>>> _ * 100
3000
2. 값을 무시하고 싶을 때
- 어떤 특정값을 무시하기 위한 용도로 사용됨, 값이 필요하지 않거나 사용되지 않는 경우 _에 할당
>>> a, _, b = (10, 20, 30)
>>> print(a,b)
(10, 30)
3. 변수나 함수명에 특별한 의미 또는 기능을 부여하고자 할 때
- 파이썬 컨벤션 가이드라인인 PEP8을 참고하면 아래와 같은 네이밍 컨벤션을 소개하고 있음
- _single_leading_underscore: 한 모듈 내부에서만 사용하는 private 클래스/함수/변수/메서드를 선언할 때 사용
_internal_name = 'name' # private 변수
def _private_function(self): # private 메서드
- single_trailing_underscore_ : 파이썬 키워드와의 충돌을 피하기 위해 사용
list_ = List.objects.get(1) # python의 기존 list와의 충돌을 피하기 위해 사용
- __double_leading_underscores: 문법적 요소로 클래스 속성명을 맹글링하여 클래스간 속성명의 충돌을 방지하기 위한 용도로 사용됨
- 맹글링 : 컴파일러나 인터프리터가 변수/함수명을 그대로 사용하지 않고 일정한 규칙에 의해 변형시키는 것, Python의 맹글링 규칙은 더블 언더스코어로 지정된 속성명 앞에 _ClassName을 결합하는 방식으로 __method는 _ClassName__method로 맹글링됨
class A:
`def __double_method(self): # 맹글링을 위한 메서드`
- double_leading_and_trailing_underscores : 스페셜 변수나 메서드(매직 메서드)에 사용되는 컨벤션으로 __init__이나 __eq__와 같은 메서드가 있다
4. 국제화(Internationalization)/지역화(Localization) 함수로써 사용할 때
5. 숫자 리터럴 값의 자릿수 구분을 위한 구분자로써 사용할 때
- Python 3.6에 추가된 문법
dec = 1_000_000 #1000000