[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을 참고하면 아래와 같은 네이밍 컨벤션을 소개하고 있음
  1. _single_leading_underscore: 한 모듈 내부에서만 사용하는 private 클래스/함수/변수/메서드를 선언할 때 사용

_internal_name = 'name' # private 변수

def _private_function(self): # private 메서드

  1. single_trailing_underscore_ : 파이썬 키워드와의 충돌을 피하기 위해 사용

list_ = List.objects.get(1) # python의 기존 list와의 충돌을 피하기 위해 사용

  1. __double_leading_underscores: 문법적 요소로 클래스 속성명을 맹글링하여 클래스간 속성명의 충돌을 방지하기 위한 용도로 사용됨
  • 맹글링 : 컴파일러나 인터프리터가 변수/함수명을 그대로 사용하지 않고 일정한 규칙에 의해 변형시키는 것, Python의 맹글링 규칙은 더블 언더스코어로 지정된 속성명 앞에 _ClassName을 결합하는 방식으로 __method는 _ClassName__method로 맹글링됨

class A:

`def __double_method(self): # 맹글링을 위한 메서드`
  1. double_leading_and_trailing_underscores : 스페셜 변수나 메서드(매직 메서드)에 사용되는 컨벤션으로 __init__이나 __eq__와 같은 메서드가 있다

4. 국제화(Internationalization)/지역화(Localization) 함수로써 사용할 때

5. 숫자 리터럴 값의 자릿수 구분을 위한 구분자로써 사용할 때

  • Python 3.6에 추가된 문법

dec = 1_000_000 #1000000