sourcecode

도움말()이 메서드 서명을 나열하는 경우 슬래시는 무엇을 의미합니까?

codebag 2023. 5. 23. 21:53
반응형

도움말()이 메서드 서명을 나열하는 경우 슬래시는 무엇을 의미합니까?

입니까?/ 3균평(Python 3.4)에서help의 출력입니다.range마지막 괄호 앞에?

>>> help(range)
Help on class range in module builtins:

class range(object)
 |  range(stop) -> range object
 |  range(start, stop[, step]) -> range object
 |  
 |  Return a virtual sequence of numbers from start to stop by step.
 |  
 |  Methods defined here:
 |  
 |  __contains__(self, key, /)
 |      Return key in self.
 |  
 |  __eq__(self, value, /)
 |      Return self==value.

                                        ...

키워드 매개변수로 사용할 수 없는 위치 매개변수의 끝을 나타냅니다.Python 3.8 이전에는 이러한 매개 변수를 C API에서만 지정할 수 있었습니다.

그것은 의미합니다.key에 대한 인수입니다.__contains__위치를통수다전있니습할달만서해(▁(다▁can있)range(5).__contains__(3)), 인수()가 아닌, 키워드 인수()입니다.range(5).__contains__(key=3)), 순수 함수의 위치 인수로 수행할 수 있는 작업입니다.

인수 클리닉 설명서도 참조하십시오.

Clinic에서 변수를 하려면 Argument Clinic을 합니다./마지막 매개 변수 뒤에 있는 선에서 매개 변수 선과 동일하게 들여씁니다.

Python FAQ:

함수의 인수 목록에 있는 슬래시는 함수 이전의 매개 변수가 위치 전용임을 나타냅니다.위치 전용 매개 변수는 외부에서 사용할 수 있는 이름이 없는 매개 변수입니다.위치 전용 매개 변수를 수락하는 함수를 호출하면 인수가 위치만을 기준으로 매개 변수에 매핑됩니다.

구문은 버전 3.8에서 Python 언어 사양의 일부입니다. 자세한 내용은 PEP 570 – Python Positional-Only Parameters를 참조하십시오.PEP 570 이전에는 Python에 향후 포함될 수 있도록 구문이 이미 예약되어 있었습니다. 자세한 내용은 PEP 457 - Positional-Only 매개 변수에 대한 구문을 참조하십시오.

위치 전용 매개 변수는 더 깨끗하고 명확한 API로 이어질 수 있으며, 그렇지 않으면 C 전용 모듈의 순수 Python 구현을 더 일관되고 쉽게 유지 관리할 수 있습니다. 위치 전용 매개 변수는 매우 적은 처리를 필요로 하기 때문에 더 빠른 Python 코드로 이어집니다.

이 질문은 제가 직접 한 것입니다.:) 알게 되었습니다./원래 Guido가 여기서 제안한 것입니다.

대체 제안: '/'을 사용하는 것은 어떻습니까? '*'는 "키워드 인수"를 의미하며 '/'는 새로운 문자가 아닙니다.

그리고 그의 제안이 이겼습니다.

Hah. 그게 사실이라면, 내 '/' 제안이 승리합니다.

 def foo(pos_only, /, pos_or_kw, *, kw_only): ...

이것을 다루는 매우 관련성 있는 문서는 PEP 570이라고 생각합니다.재점검 섹션이 좋아 보이는 곳.

씌우다

사용 사례는 함수 정의에서 사용할 파라미터를 결정합니다.

 def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):

지침으로:

이름이 중요하지 않거나 의미가 없으며 항상 같은 순서로 전달되는 소수의 인수만 있는 경우 위치 지정만 사용합니다.이름에 의미가 있고 이름으로 명시하여 함수 정의를 더 쉽게 이해할 수 있는 경우에만 키워드를 사용합니다.


가 함가다끝경나로 /

def foo(p1, p2, /)

이것은 모든 함수 인수가 위치적이라는 것을 의미합니다.

슬래시(/)는 슬래시 이전의 모든 인수가 위치 전용 인수임을 나타냅니다.PEP 570이 수락된 후 Python 3.8에 위치만 인수 기능이 추가되었습니다.처음에 이 표기법은 PEP 457 - 위치 전용 매개변수 표기법에 정의되었습니다.

Forward slash(/) 이전 함수 정의의 매개 변수는 위치만 지정하며 slash(/) 뒤에 오는 매개 변수는 구문에 따라 모든 종류가 될 수 있습니다.여기서 인수는 함수를 호출할 때 위치만을 기준으로 위치 매개 변수에 매핑됩니다.키워드(이름)로 위치만 매개 변수를 전달하는 것이 잘못되었습니다.

다음 예를 들어 보겠습니다.

def foo(a, b, / , x, y):
   print("positional ", a, b)
   print("positional or keyword", x, y)

여기서 위의 함수 정의 매개변수 a와 b는 위치만 사용하는 반면 x 또는 y는 위치 또는 키워드일 수 있습니다.

다음 함수 호출이 유효합니다.

foo(40, 20, 99, 39)
foo(40, 3.14, "hello", y="world")
foo(1.45, 3.14, x="hello", y="world")

그러나 a, b가 키워드로 전달되는 대신 위치 인수로 전달되지 않으므로 TypeError 예외가 발생하는 함수 호출이 잘못되었습니다.

foo(a=1.45, b=3.14, x=1, y=4)

TypeError: foo()에서 일부 위치 전용 인수가 키워드 인수 'a, b'로 전달되었습니다.

python에 내장된 많은 함수는 키워드로 인수를 전달하는 것이 의미가 없는 위치적 인수만 허용합니다.예를 들어, 내장 함수 len은 하나의 위치(전용) 인수만 허용합니다. len을 len(obj="hello world")로 호출하면 가독성이 저하되는 경우 도움말(len)을 확인합니다.

>>> help(len)
Help on built-in function len in module builtins:

len(obj, /)
    Return the number of items in a container.

위치만 지정된 매개 변수를 사용하면 기본 C/라이브러리 기능을 쉽게 유지할 수 있습니다.API를 사용하는 클라이언트 코드를 손상시킬 위험 없이 위치만 변경할 수 있는 매개 변수 이름을 사용할 수 있습니다.

마지막으로, 위치만 매개 변수를 사용하면 변수 길이 키워드 인수에 사용할 수 있습니다.다음 예를 확인

>>> def f(a, b, /, **kwargs):
...     print(a, b, kwargs)
...
>>> f(10, 20, a=1, b=2, c=3)         # a and b are used in two ways
10 20 {'a': 1, 'b': 2, 'c': 3}

positional-only 매개 변수 구문이 python 3.8에 공식적으로 추가되었습니다.Python 3.8의 새로운 기능 확인 - 위치 정보 전용 인수

PEP 관련: PEP 570 -- Python Positional-Only 매개 변수

언급URL : https://stackoverflow.com/questions/24735311/what-does-the-slash-mean-when-help-is-listing-method-signatures

반응형