슬래시 (/)는 위치 전용 인수가되기 전에 모든 인수를 나타냅니다. PEP 570 이 수락 된 후 파이썬 3.8에서 위치 전용 인수 기능이 추가되었습니다 . 처음에이 표기법은 PEP 457-위치 전용 매개 변수에 대한 표기법에 정의되어 있습니다.
함수 정의 이전의 매개 변수 앞뒤 슬래시 (/)는 위치 전용이며 슬래시 (/) 뒤에 오는 매개 변수는 구문에 따라 모든 종류가 될 수 있습니다. 인수는 함수를 호출 할 때의 위치만을 기반으로 위치 매개 변수에만 매핑됩니다. 키워드 (이름)로 위치 전용 매개 변수를 전달하는 것은 유효하지 않습니다.
다음 예제를 보자
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'
파이썬의 많은 내장 함수는 키워드로 인수를 전달하는 것이 의미가없는 위치 전용 인수를 허용합니다. 예를 들어 내장 함수 len 은 하나의 위치 (전용) 인수 만 허용합니다. len (obj = "hello world")으로 len을 호출하면 가독성이 손상되는 경우 help (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}
위치 전용 매개 변수가 더 좋습니다 . 파이썬의 함수 인수 유형 : 위치 전용 매개 변수
위치 전용 매개 변수 구문이 공식적으로 python3.8에 추가되었습니다. 체크 아웃 새로운 python3.8 무엇 - 위치 인수 만
PEP 관련 : PEP 570-파이썬 위치 전용 매개 변수
/
토큰을 선택하면 "역의 역 동작*
"을 나타내 므로 파이썬은 약간 미쳤습니다. 일종의 공감각입니다.