python 밑줄의 다른 용법

4301 단어 python밑줄
본문에서 우리는 Python에서_문자의 다른 사용법.Python의 다른 많은 내용과 마찬가지로 우리는 "_"를 볼 수 있다의 다른 용법은 주로 관례적인 문제이다.여기에 소개할 몇 가지 다른 상황:
  • 단일 밑줄(예: _)
  • 이름 앞에 밑줄을 넣습니다(예: _total)
  • 이름 뒤에 밑줄을 넣습니다(예: total_)
  • 숫자 문자의 단일 밑줄(예: 100_000)
  • 이름 앞에 두 개의 밑줄을 넣습니다(예: __total)
  • 이름 앞뒤에 이중 밑줄 넣기(예: __init__)
  • 하나.단일 밑줄 (_)
    단일 밑줄은 일반적으로 3가지 경우에 사용됩니다.
    1. 해석 프로그램에서
    _이름은 대화식 해석기 세션에서 마지막으로 실행된 문장의 결과를 가리킵니다.이것은 우선 표준 CPython 해석기에 의해 완성된 것이고 다른 해석기도 그 뒤를 따른다.
    
    >>> _ 
    Traceback (most recent call last): 
      File "<stdin>", line 1, in <module> 
    NameError: name '_' is not defined 
    >>> 42 
    >>> _ 
    42 
    >>> 'alright!' if _ else ':(' 
    'alright!' 
    >>> _ 
    'alright!' 
    2. 이름으로
    이것은 이전과 관련이 있습니다._일회용 명칭으로 사용하다.이것은 코드를 읽는 사람들에게 알리기 위해 여기에 어떤 이름을 분배했지만 사용할 생각은 없습니다.예를 들어, 순환 계수기의 실제 값에 관심이 없을 수도 있습니다.
    
    n = 42 
    for _ in range(n): 
        do_something() 
    3.i18n
    저희가 볼 수 있어요_함수로 사용할 수도 있다.이런 상황에서 국제화와 현지화 문자열 변환 검색을 실행하는 함수의 이름을 사용합니다.이것은 C 언어의 관련 규칙에서 비롯된 것 같다.Django 문서에서 참조:
    
    from django.http import HttpResponse 
    from django.utils.translation import gettext as _ 
     
    def my_view(request): 
        output = _("Welcome to my site.") 
        return HttpResponse(output) 
    두 번째와 세 번째 사용법이 충돌할 수 있으므로 어떤 경우에도 _i18n으로 검색하고 번역하는 코드 블록에서는 _일회용으로 사용되는 이름입니다.
    2.이름 앞에 단일 밑줄 넣기(예: _total)
    이름 앞의 단일 밑줄은 프로그래머가 이름을'사유'로 간주하도록 지정하는 데 사용됩니다.이것은 일종의 약속으로 간주할 수 있으며, 코드를 읽는 사람이 알기 쉽게_시작 이름은 내부에서 사용할 수 있습니다.Python 문서에서 설명한 바와 같이:
    밑줄이 있는 이름(예: _spam)은 함수, 메서드, 데이터 구성원 등 API의 비공개 부분으로 간주되어야 합니다.그것은 만약 변경이 있으면 별도로 통지하지 않는 것을 용서하십시오.
    *일종의 약속이라고 하는 것은 사실상 해석 프로그램에 어떤 의미가 있기 때문이다.만약 우리가 import*에서 모듈/패키지의 __를 제외하고는all__ 목록에 명시적으로 포함되어 있지 않으면 _로 가져오지 않습니다.시작 이름.
    셋.이름 뒤에 있는 단일 밑줄 (예: total_)
    이름 뒤에 있는 단일 밑줄은 이름이 다른 이름을 가리지 않도록 하는 데 사용되며, 당연히 관례입니다.예를 들어, 만약 어떤 형식을 명명하고 싶다면, 파이썬의 내장 형식을 덮지 않기 위해서, 포맷_이라고 명명할 수 있습니다.
    사.숫자 글꼴의 단일 밑줄 (예: 100_000)
    PEP 515 지수는 밑줄이 전체, 부동 점 및 복잡한 숫자 텍스트에서 숫자를 그룹화하는 시각적 구분자로 사용할 수 있도록 파이썬의 문법을 확장하는 것을 권장합니다. 이유는 다음과 같습니다.
    이것은 다른 현대 언어의 흔한 특징으로 비교적 긴 문자나 텍스트의 가독성을 향상시킬 수 있으며 그 값은 바이트나 16진법 표현법의 단어와 같은 부분으로 명확하게 구분되어야 한다.
    따라서 다음과 같은 작업을 수행할 수 있습니다.
    
    #   
    amount = 10_000_000.0 
     
    #   
    addr = 0xCAFE_F00D 
     
    #   
    flags = 0b_0011_1111_0100_1110 
     
    # ,  
    flags = int('0b_1111_0000', 2) 
    5.이름 앞에 있는 이중 밑줄 (예: __total)
    이름 (특히 메소드 이름) 앞에 이중 밑줄 사용하기 (__)약속이 아니라 해석 프로그램에 특별한 의미가 있을 뿐이다.Python은 이름과 하위 클래스가 정의한 이름이 충돌하지 않도록 관리합니다.Python 문서에서 설명한 것처럼 어떤 형태로든 __spam의 식별자 (최소 두 개의 선행 밑줄 및 최대 한 개의 꼬리 밑줄) 는 텍스트에서 _classname__spam 교체, 그 중에서classname는 현재 클래스 이름이며, 선도 밑줄이 제거됩니다.
    다음 예제를 예로 들 수 있습니다.
    
    >>> class A(object): 
    ...     def _internal_use(self): 
    ...         pass 
    ...     def __method_name(self): 
    ...         pass 
    ...  
    >>> dir(A()) 
    ['_A__method_name', ..., '_internal_use'] 
    위에서 보듯이,_internal_use는 변하지 않지만 __method_name 변경됨_ClassName__method_name. 현재, 만약 당신이 A의 하위 클래스, 예를 들어 B(나쁜 이름)를 만들면, 당신은 쉽게 A를 덮어쓸 수 없을 것이다
    
    >>> class B(A): 
    ...     def __method_name(self): 
    ...         pass 
    ...  
    >>> dir(B()) 
    ['_A__method_name', '_B__method_name', ..., '_internal_use'] 
    여기서 예기된 동작은 Java의 최종 방법과 C++의 일반 (비가상) 방법과 거의 같습니다.
    여섯.이름 앞과 뒤에 이중 밑줄 넣기(예: __init__)
    이것들은 Python에서 사용하는 특수한 방법의 이름입니다.우리에게 있어서 이것은 단지 하나의 약정일 뿐이다. 즉, Python 시스템은 사용자가 정의한 이름과 충돌하지 않는 이름을 사용하는 방식이다.그리고 이 방법들을 덮어쓰고 Python에서 호출할 때 필요한 행동을 정의합니다.예를 들어, 클래스를 작성할 때 __init__다시 쓰는 방법.
    우리가 자신의 특수한 방법 이름을 쓰는 것을 막을 수 있는 것은 아무것도 없다. (그러나 이렇게 하지 않는 것이 가장 좋다.)
    
    >>> class C(object): 
    ...     def __mine__(self): 
    ...         pass 
    ... 
    >>> dir(C) 
    ... [..., '__mine__', ...] 
    가능한 한 이런 명칭 방식을 사용하지 말고, 파이썬이 정의한 특수 명칭이 이 약정을 따르도록 하면 된다.
    이상은python의 각종 밑줄의 작용에 대한 상세한 내용입니다.python 밑줄에 대한 더 많은 자료는 저희 다른 관련 문장에 주목하세요!

    좋은 웹페이지 즐겨찾기