Python 3.8부터 위치 전용 매개변수를 지원합니다.
해당 기능은 파라미터의 일부를 키워드 인자 사용을 금지하는 역할을 수행합니다
https://docs.python.org/ko/dev/whatsnew/3.8.html#positional-only-parameters
위치 전용 인자(positional-only-parameters)이 추가되면서 함수 작성 시, 파라미터 선언 방법은 아래와 같습니다.
def function(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)
# 가운데 c, d는 위치 또는 키워드 둘 다 사용 가능
function(10, 20, 30, d=40, e=50, f=60)
위 코드에서 `/ `는 위치 전용 매개변수임을 위미하며,
`*`는 키워드 전용 매개변수를 의미합니다.
정리하면 아래와 같습니다.
def function(<위치 기반 인자들>, /, <위치 기반 또는 키워드 인자들>, *, <키워드 인자들>)
✏️ 언제사용할까?
주 목적은 코드를 손상없이 매개변수 이름을 나중에 변경할 수 있다는 이점이 있습니다.
아래 코드에선 dist가 키워드 인자로 노출되지 않습니다.
이에 따라 후에 해당 파라미터의 네임은 언제든 변경할 수 있고, 어색한 네임을 가진 키워드를 숨길 수 있습니다.
# dist 네임은 언제든 변경되어도 상관없다.
def quantiles(dist, /, *, n=4, method='exclusive')
# obj가 키워드 인자로 노출되는 것을 방지한다. 원래대로라면 len(obj='hello') 작성
len('hello')
또 다른 이점은, 위치기반 인자와 키워드 인자를 가변인자와 함께 사용할 수 있는 것 입니다.
def f(a, b, /, **kwargs):
print(a, b, kwargs)
f(10, 20, a=1, b=2, c=3)
ⓒ 굿햄 2024. daryeou@gmail.com all rights reserved.
댓글