[python] 파이썬에서 단일 밑줄“_”변수의 목적은 무엇입니까?

이 코드에서 _after 의 의미는 무엇입니까 for?

if tbh.bag:
   n = 0
   for _ in tbh.bag.atom_set():
      n += 1



답변

_ 파이썬에서 4 가지 주요 용도가 있습니다.

  1. 대화식 인터프리터 세션에서 마지막으로 실행 된 표현식 (/ statement)의 결과를 보유합니다. 이 선례는 표준 CPython 인터프리터에 의해 설정되었으며 다른 인터프리터도
  2. 다음
    과 같은 코드에서와 같이 i18n에서 번역 조회 ( 예 : gettext 설명서 참조
    ) :
    raise forms.ValidationError(_("Please enter a correct username"))
  3. 다음과 같은 코드에서와 같이 함수 결과의 일부가 의도적으로 무시되고 있음을 나타내는 일반적인 목적의 “throwaway”변수 이름입니다 (개념적으로 폐기 됨)
    label, has_label, _ = text.partition(':').
  4. 서명이 고정 된 (예 : 콜백 또는 부모 클래스 API) 함수 정의의 일부 ( def또는 lambda)를 사용 하지만이 특정 함수 구현에는 다음과 같은 코드와 같이 모든 매개 변수가 필요하지 않습니다.callback = lambda _: True

(오랫동안이 답변은 처음 세 가지 유스 케이스 만 나열했지만 네 번째 케이스는 여기 에 표시된대로 명시 적으로 나열 할 가치가 있을 정도로 자주 나타났습니다. )

후자의 “throwaway variable or parameter name”유스 케이스는 translation lookup 유스 케이스와 충돌 할 수 있으므로 _i18n 변환에도 사용되는 코드 블록에서 throwaway 변수로 사용하는 것을 피해야 합니다 (많은 사람들은 이중 밑줄을 선호합니다) ,, __정확히이 이유로 버리기 변수).


답변

그것은 단지 변수 이름이며, 파이썬에서 _버리기 변수 에 사용 하는 것이 일반적입니다 . 루프 변수가 실제로 사용되지 않음을 나타냅니다.


답변

밑줄 _은 파이썬에서 ” I do n’t care “또는 ” Throwaway “변수로 간주됩니다

  • 파이썬 인터프리터는 마지막 표현식 값을이라는 특수 변수에 저장합니다 _.

    >>> 10
    10
    
    >>> _
    10
    
    >>> _ * 3
    30
  • 밑줄 _은 특정 값을 무시하는 데에도 사용됩니다. 특정 값이 필요하지 않거나 값이 사용되지 않으면 값을 밑줄에 지정하십시오.

    포장 풀기시 값 무시

    x, _, y = (1, 2, 3)
    
    >>> x
    1
    
    >>> y
    3

    색인 무시

    for _ in range(10):
        do_something()

답변

파이썬에서 밑줄을 사용하는 경우는 5 가지가 있습니다.

  1. 인터프리터에 마지막 표현식의 값을 저장합니다.

  2. 특정 값을 무시합니다. (소위“나는 상관 없다”)

  3. vartiables 또는 기능의 이름에 특별한 의미와 기능을 부여합니다.

  4. ‘국제화 (i18n)’또는 ‘현지화 (l10n)’기능으로 사용합니다.

  5. 숫자 리터럴 값의 숫자를 구분합니다.

다음mingrammer의 예제가 포함 된 멋진 기사입니다 .


답변

파이썬 언어에 관한 한 _특별한 의미는 없습니다. 그것은 유효한 식별자 단지와 같은 _foo, foo_또는 _f_o_o_.

특별한 의미 _는 순전히 관례입니다. 몇 가지 경우가 일반적입니다.

  • 변수를 사용하지 않을 때 더미 이름이지만 구문 / 의미론에 이름이 필요합니다.

    # iteration disregarding content
    sum(1 for _ in some_iterable)
    # unpacking disregarding specific elements
    head, *_ = values
    # function disregarding its argument
    def callback(_): return True
  • 많은 REPL / 쉘은 마지막 최상위 식의 결과를에 저장합니다 builtins._.

    특수 식별자 _는 대화식 인터프리터에서 마지막 평가 결과를 저장하는 데 사용됩니다. builtins모듈에 저장됩니다 . 대화식 모드 _가 아닌 경우 특별한 의미가 없으며 정의되어 있지 않습니다. [ 출처 ]

    전역 또는 로컬 _정의에 의해 음영 처리되지 않는 한 이름이 조회되는 방식으로 인해 베어가 _참조합니다 builtins._.

    >>> 42
    42
    >>> f'the last answer is {_}'
    'the last answer is 42'
    >>> _
    'the last answer is 42'
    >>> _ = 4  # shadow ``builtins._`` with global ``_``
    >>> 23
    23
    >>> _
    4

    참고 : 와 같은 일부 쉘 ipython은 지정하지 않고 builtins._특수한 경우에 사용 _합니다.

  • 컨텍스트 국제화 및 현지화 _에서 기본 번역 함수의 별명으로 사용됩니다.

    gettext.gettext (메시지)

    현재 글로벌 도메인, 언어 및 로캘 디렉토리를 기반으로 현지화 된 메시지 번역을 반환합니다. 이 함수는 일반적으로 로컬 네임 스페이스에서 _ ()로 별칭이 지정됩니다 (아래 예 참조).


답변