728x90
반응형
질문 : 파이썬에서 단일 밑줄“_”변수의 목적은 무엇입니까?
이 코드에서 for
_
의 의미는 무엇입니까?
if tbh.bag:
n = 0
for _ in tbh.bag.atom_set():
n += 1
답변
_
는 Python에서 세 가지 주요 관습적인 용도를 가지고 있습니다.
- 대화 형 인터프리터 세션에서 마지막으로 실행 된 표현식의 결과를 보관합니다 ( docs 참조). 이 선례는 표준 CPython 통역사에 의해 설정되었으며 다른 통역사도 이에 따랐습니다.
- i18n에서 번역 조회 ( 예 : gettext 문서 참조)의 경우 다음과 같은 코드에서
raise forms.ValidationError(_("Please enter a correct username"))
- 범용 "일시적"변수 이름 :
- 다음과 같은 코드에서와 같이 함수 결과의 일부가 의도적으로 무시되고 있음을 나타 내기 위해 (개념적으로는 삭제됩니다.)
label, has_label, _ = text.partition(':')
- 함수 정의의 일부로 (
def
또는lambda
) 서명이 고정되어 있지만 (예 : 콜백 또는 상위 클래스 API에 의해)이 특정 함수 구현에는 다음과 같은 코드에서와 같이 모든 매개 변수가 필요하지 않습니다.
[오랫동안이 답변은이 사용 사례를 나열하지 않았지만 여기 에서 언급했듯이 명시 적으로 나열 할 가치가있을만큼 충분히 자주 나타났습니다.]def callback(_): return True
_
를 일회용 변수로 사용하지 않아야합니다 (많은 사람들이 일회용 변수로__
정확히 이런 이유로). Linters는 종종이 사용 사례를 인식합니다. 예를 들어,year, month, day = date()
day
이 사용되지 않으면 린트 경고를 발생시킵니다.day
이 정말로 필요하지 않은 경우 수정 사항year, month, _ = date()
입니다. 람다 함수와 동일하게 lambdalambda arg: 1.0
은 하나의 인수를 필요로하지만 사용하지 않는 함수를 생성하며, 이는 lint에 의해 포착됩니다.lambda _: 1.0
을 작성하는 것입니다. 사용하지 않는 변수는 종종 버그 / 오타를 숨기고 있습니다 (예 :day
설정하지만 다음 줄에dya
- 다음과 같은 코드에서와 같이 함수 결과의 일부가 의도적으로 무시되고 있음을 나타 내기 위해 (개념적으로는 삭제됩니다.)
출처 : https://stackoverflow.com/questions/5893163/what-is-the-purpose-of-the-single-underscore-variable-in-python
728x90
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
파이썬에서 슈퍼 생성자를 호출하는 방법 (0) | 2021.11.29 |
---|---|
유니 코드 문자열을 Python의 문자열로 변환 (추가 기호 포함) (0) | 2021.11.29 |
파이썬 객체에 어떤 메서드가 있는지 찾기 (0) | 2021.11.29 |
Python : 어떤 OS에서 실행 중인지 확인하는 방법 (0) | 2021.11.26 |
파이썬 예외 메시지를 출력하는 방법 (0) | 2021.11.26 |