본문 바로가기
Python

[Python] 위치 전용 인자 / 키워드 전용 인자

by 굿햄 2024. 9. 30.

 

Python 3.8부터 위치 전용 매개변수를 지원합니다.

 

해당 기능은 파라미터의 일부를 키워드 인자 사용을 금지하는 역할을 수행합니다

 

https://docs.python.org/ko/dev/whatsnew/3.8.html#positional-only-parameters

 

What’s New In Python 3.8

Editor, Raymond Hettinger,. This article explains the new features in Python 3.8, compared to 3.7. Python 3.8 was released on October 14, 2019. For full details, see the changelog. Summary – Releas...

docs.python.org

 

위치 전용 인자(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.

댓글