[python] underscore(_) in Python

출처: https://hackernoon.com/understanding-the-underscore-of-python-309d1a029edc

  • Python에서 Underscore(_)는 특별한 문자이다.
  1. 인터프리터에서 마지막 표현 값을 저장하고 있다.
  2. 특정 문자 무시

1. 인터프리터에서 마지막 값

>>> 10
10
>>> _
10
>>> _ * 3
30
>>> _ * 20
600

2. 값 무시

  • Unpacking 시, 값을 무시
x, _, y = (1, 2, 3) # x=1, y=3

# Ignore the multiple values. It is called "Extended Unpacking" which is available in only Python 3.x
x, *_, y = (1, 2, 3, 4, 5) # x = 1, y = 5  

# Ignore the index
for _ in range(10):     
    do_something()  
    
# Ignore a value of specific location
for _, val in list_of_tuple:
    do_something()    

_ single leading underscore

  1. _ single leading underscore는 모듈에서 private 변수, 함수, 메서드, 클래스로 사용할 수 있게한다.

private variable

_internal_name = 'hello world!' # private variable
_internal_version = '1.0' 	# private variable

priavate class, method

class _Student: # private Class
    _hidden_factor = 2 # private Variable

class _Student:
    def __init__(self, price):
        self._price = price
    
    def _double_price(self): # private method
        return self._price

_ single trailing underscore

  • Python keyword, Python built-in 와 충돌을 피하기위해 사용된다.
Tkinter.Toplevel(master, class_='ClassName') # 'class' 키워드와 충돌을 피해기 위해 사용

list_=List.objects.get(1) # list built-in method와 충돌을 피하기 위해 사용

__ double leading underscore

  • __ 더블 리딩 언더스코어는 규약이기 보다는 syntax이다.
    • 클래스 사이의 name attribute의 충돌을 피하기 위한 클래스의 attribute names를 mangle한다.

__ double trailing underscore

  • __ NAME __magic mothod에서 사용된다.

0b_1111_1111 : digit separate

dec_base = 1_000_000
bin_base = 0b_1111_0000
hex_base = 0x_1234_abcd

좋은 웹페이지 즐겨찾기