도움말()이 메서드 서명을 나열하는 경우 슬래시는 무엇을 의미합니까?
입니까?/
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을 합니다.
/
마지막 매개 변수 뒤에 있는 선에서 매개 변수 선과 동일하게 들여씁니다.
함수의 인수 목록에 있는 슬래시는 함수 이전의 매개 변수가 위치 전용임을 나타냅니다.위치 전용 매개 변수는 외부에서 사용할 수 있는 이름이 없는 매개 변수입니다.위치 전용 매개 변수를 수락하는 함수를 호출하면 인수가 위치만을 기준으로 매개 변수에 매핑됩니다.
이 구문은 버전 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
'sourcecode' 카테고리의 다른 글
WPF: 열/행 여백/패딩이 있는 그리드? (0) | 2023.05.28 |
---|---|
iPhone/iPad의 UI 레이블에서 굵고 기울임꼴로 설정하려면 어떻게 해야 합니까? (0) | 2023.05.23 |
C#에서 if/else를 사용하는 것과 switch-case를 사용하는 것 사이에 큰 차이가 있습니까? (0) | 2023.05.23 |
bash에서 변수의 줄 수를 계산하려면 어떻게 해야 합니까? (0) | 2023.05.23 |
Node.js에서 "ReferenceError: primaryials is not defined"를 수정하는 방법 (0) | 2023.05.23 |