programing

help() 출력에서 슬래시는 무엇을 의미합니까?

copysource 2022. 9. 15. 23:30
반응형

help() 출력에서 슬래시는 무엇을 의미합니까?

의 개요/평균(Python 3.4's)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.

                                        ...

Positional Only 파라미터의 끝을 나타냅니다.이것은 키워드 파라미터로 사용할 수 없는 파라미터입니다.Python 3.8 이전에는 이러한 파라미터는 C API에서만 지정할 수 있었습니다.

즉,key에 대한 의론.__contains__위치만 통과할 수 있습니다(range(5).__contains__(3)키워드 인수가 아닙니다( ).range(5).__contains__(key=3))는 순수하게 정의된 함수에서 위치 인수로 수행할 수 있는 작업입니다.

Argument Clinic 매뉴얼도 참조해 주세요.

Argument Clinic에서 모든 파라미터를 위치 전용으로 마크하려면/마지막 매개 변수 뒤에 있는 줄 자체에서 매개 변수 줄과 동일하게 들여씁니다.

Python FAQ(에 최근 추가)를 참조하십시오.

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

구문은 이제 Python 언어 사양의 일부가 되었습니다. 버전 3.8부터는 PEP 570 Python Positional-Only Parameters 참조하십시오.PEP 570 이전에는 향후 Python에 포함될 수 있도록 구문이 이미 예약되어 있었습니다(PE 457 - Syntax For Positional-Only Parameters).

Positional Only 파라미터는 보다 명확하고 명확한 API로 이어지며, 그렇지 않으면 C 전용 모듈의 Python 구현이 보다 일관되고 유지보수가 용이하며, Python 코드 처리가 거의 필요하지 않기 때문에 Python 코드 속도가 빨라집니다.

제가 직접 물어본 질문입니다.:) 확인 결과/원래 이 자리에서 Guido가 제안했어요.

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

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

그게 사실이라면 내 '/' 제안이 이긴 거야

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

나는 이것을 다루는 매우 적절한 문서가 PEP 570이라고 생각한다.재점검 섹션이 보기 좋은 곳.

씌우다

사용 사례에 따라 함수 정의에 사용할 매개 변수가 결정됩니다.

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

가이드라인:

이름이 중요하지 않거나 의미가 없는 경우 positional-only를 사용합니다.또한 항상 같은 순서로 전달되는 인수는 몇 개뿐입니다.이름에 의미가 있고 함수의 정의가 이름에 명시적이어서 이해하기 쉬운 경우 키워드만 사용하십시오.


가 '하다'로 /

def foo(p1, p2, /)

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

슬래시(/)는 앞에 있는 모든 인수가 위치 전용 인수임을 나타냅니다.PEP 570이 받아들여진 에 python 3.8에 positional only 인수 기능이 추가되었습니다.처음에 이 표기법은 PEP 457 - Positional-Only Parameters 표기법에 정의되어 있습니다.

Foraward 슬래시(/) 이전 함수 정의의 매개 변수는 위치만 지정되며, 그 뒤에 슬래시(/)가 이어지는 매개 변수는 구문에 따라 모든 종류를 지정할 수 있습니다.여기서 인수는 함수를 호출했을 때의 위치만을 기준으로 위치 파라미터에 매핑됩니다.키워드(이름)로 위치 전용 매개 변수를 전달하는 것은 잘못되었습니다.

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

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는 positional 인수로 전달되지 않고 키워드로서 전달되기 때문에 예외 TypeError가 발생합니다.

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

TypeError: foo()가 키워드 인수 'a, b'로 전달된 일부 위치 전용 인수를 받았습니다.

python에 내장된 함수의 대부분은 키워드로 인수를 전달하는 것이 의미가 없는 위치적인 인수만 받아들입니다.예를 들어 기본 제공 함수 len은 하나의 positional(only) 인수만 받습니다. len을 len(obj="hello world")으로 호출하면 가독성이 손상되는 경우 help(len)를 선택하십시오.

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

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

Positional Only 파라미터로 기본 c/라이브러리 기능을 쉽게 유지할 수 있습니다.API를 사용하는 클라이언트 코드가 파손될 위험 없이 향후 위치 전용 파라미터의 파라미터 이름을 변경할 수 있습니다.

마지막으로 positional only 파라미터를 사용하면 variable length 키워드 인수에 사용되는 이름을 사용할 수 있습니다.다음 예제를 확인합니다.

>>> 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의 함수 인수 유형: Positional Only Parameters에서 더 잘 설명합니다.

python3.8에 위치 전용 파라미터 구문이 공식적으로 추가되었습니다.새로운 python 3.8 - positional only 인수 확인

PEP 관련: PEP 570 -- Python Positional-Only 파라미터

언급URL : https://stackoverflow.com/questions/24735311/what-does-the-slash-mean-in-help-output

반응형