language/python

[python]언더스코어

용감한 개복치 2022. 5. 10. 02:59

아휴 스크립트 언어 짱싫다 했는데 어쩌다보니 하고있네...

 

언더 스코어(_)

기본적으로 언더 스코어는 여타 다른 언어에서 스네이크 방식의 변수 및 함수를 선언할 때 이름에 쓰였다.

그런데 파이썬에서는 조금 특별한 위치를 가진다.

 

  • 인터프리터에서 마지막 값을 저장
  • 값을 무시하고싶을 때
  • 변수나 함수명에 특별한 의미, 기능부여
  • 숫자 리터럴값의 자릿수 구분용

 

인터프리터에서

인터프리터, 그러니까 대충 터미널 켰을때 인터프리터는 대화형 실행을 하기 때문에 마지막 값을 볼 수 있다. 그 마지막 값을 받아 오는 _

>> 1+1
2
>> _+1
3

이런느낌

 

값을 무시하고싶을 때

일단 이 용도의 _는 python 3.x 에서만 사용 가능하다.

# 언패킹시 특정값을 무시
x, _, y = (1, 2, 3) # x = 1, y = 3

# 여러개의 값 무시
x, *_, y = (1, 2, 3, 4, 5) # x = 1, y = 5

# 인덱스 무시, 인덱스 값이 크게 의미를 가지지 않는 반복문에서
for _ in range(10):
    fill_in()

# 특정 위치의 값 무시
for _, val in list_of_tuple:
    fill_in()

 

 

변수나 함수명에 특별한 의미, 기능부여

파이썬용 가이드라인 PEP8에서 소개한 내용인데,

https://peps.python.org/pep-0008/

 

PEP 8 – Style Guide for Python Code | peps.python.org

PEP 8 – Style Guide for Python Code Author Guido van Rossum , Barry Warsaw , Nick Coghlan Status Active Type Process Created 05-Jul-2001 Post-History 05-Jul-2001, 01-Aug-2013 Table of Contents This document gives coding conventions for the Python code co

peps.python.org

영어고 길다.

 

3줄 요약

  • 폴더 : 폴더안에 __init__.py 파일이 있으면 해당 폴더를 패키지로 취급
  • 메소드 : 모듈 import할 때, from module import * 처럼 대충 다 가져오는 형식 앞에 _가 붙어있는 변수, 메소드는 호출 x. 쓰고싶으면 직접 호출.
  • __init__, __str__ 처럼 클래스를 만들고 싶을때 or 맹글링을 하고싶을때 메소드 앞에 _ClassName을 붙이는 방식으로 사용

 

숫자 리터럴값의 자릿수 구분용

1,000,000 = 1_000_000

제일 간단한데 제일 신기했다 이러면 일반 숫자 리터럴과 동일하게 처리된다.