본문 바로가기
programming/Python

파이썬 함수 임의 키워드 인수 **kwargs 사용하기 python function arbitrary keyword arguments

by 개코 - 개발과 코딩 2021. 10. 28.

파이썬 함수는 키와 쌍의 인수를 보내고 함수에서 선택적으로 사용할 수 있다. 임의 키워드 인수에 ** 을 붙이면 좀 더 자유도가 높은 함수를 만들어 사용할 수 있다. 너무 편한 기능이다. 이것 하나로 함수의 사용은 끝이 날 수도 있다.

파이썬 함수 임의 키워드 인수 **kwargs 사용하기
python function arbitrary keyword arguments

파이썬 함수를 호출하는 인수를 키와 값의 쌍의 형태로 대량으로 보낼 경우가 필요할 수 있다.

파이썬 함수의 임의 키워드 인수를 사용하면 이 값들을 선택하여 함수의 기능을 사용할 수 있다.

이 임의 키워드 인수는 **kwargs 형태로 사용된다.

임의 키워드 인수

임의 키워드 인수를 알기 전에 키워드 인수가 뭔지 알면 좋다.

솔직히 몰라도 상관없다.

임의 키워드 인수를 알면 키워드 인수로 함수를 만들어 사용하는 것에 필요성을 느끼지 못할 수 있다.

키워드 인수를 함수에서 사용할 때는 함수의 파라미터가 인수의 파라미터를 지정해야 한다.

임의 키워드 인수를 함수에서 사용할 때는 **kwargs 로 파라미터를 지정하고 함수내에서 선택적으로 사용하면 된다.

배열에서 특정 키를 추출하는 형태와 비슷하다.

사용법

파이썬 함수에서 임의 키워드 인수를 사용하기 코드 사용법은 아래와 같다.

print('----------')

#- 함수부분
def pythonFunction(**kwargs) : #-{

    return kwargs["key_name"]
    
#-}

#- 코드부분
vResult = pythonFunction(key1=value1, key2=value2, key3=value3, .......)

print('----------')

임의 키워드 인수를 사용하는 함수를 호출할 때는 key와 value 쌍의 형태로 데이터를 보내준다.

함수에서는 **kwargs 파라미터로 받는다.

이 의미는 c언어의 그것과 비슷하다.

즉 파라미터의 컬렉션 주소를 받는 것과 비슷하게 보인다.

함수에서는 배열과 같은 형식을 사용하여 인수로 보내진 키 이름을 입력해 주면 된다.

샘플코드

직접 코드를 작성해 본다.

소스를 한 번 보는 것이 백번의 말보다 쉬울 수 있다.

함수를 호출하는 부분인 키와 쌍의 데이터집합으로 인수를 보낸다.

함수는 임의 키워드 인수인 **kwargs를 받도록 파라미터를 구성한다.

함수 내부에서는 키값을 이용해 인수 배열의 형식으로 값을 추출한다. 

이것은 곧 임의 키워드 인수를 사용하기 위해 보내지는 인수들은 배열일 수 있다는 가정을 세울 수 있으며,
이렇게 사용하기 위해서는 key value 의 데이터 집합의 데이터 타입은 동일해야 한다는 것을 알 수 있다.

print('----------')

#- 함수부분
def pythonFunction(**kwargs) : #-{

    vResult = kwargs["key2"] + kwargs["key3"] + kwargs["key1"]

    return vResult
    
#-}

#- 코드부분
vResult = pythonFunction(key3=100, key1=300, key2=500)
print("함수 호출 결과 vResult", type(vResult), vResult )

vResult = pythonFunction(key2=" YGEnt", key3=" 블랙핑크", key1=" BlankPink")
print("함수 호출 결과 vResult", type(vResult), vResult )

print('----------')

결과화면을 보자.

인수도 잘 보내졌고 임의 키워드 인수도 잘 추출되었다.

여기서 궁금증이 생긴다.

파이썬의 데이터 타입은 관대하다.

사용자가 입력된 데이터에 따라 데이터 타입이 결정된다.

그렇다면 임의 키워드 함수에서 데이터 타입이 서로 다르면 어떻게 될까

#- 코드부분
vResult = pythonFunction(key3=100, key1="300", key2=500)
print("함수 호출 결과 vResult", type(vResult), vResult )

인수의 데이터타입이 서로 다른 경우 타입에러가 발생한다.

이 점만 주의하도록 하자.

반응형

댓글