Python3 관련

[python3] dictionary를 함수의 인자로 넘기기

녕집사 2022. 2. 27. 13:50
반응형

기본적으로 파이썬에서 함수의 인자를 넘기기 위해서는 다음과 같이 진행하게 됩니다.

 

def add_func(x,y):
    result = x + y
    return result

result_val = add_func(2, 3)
print(result_val)

x+y를 통해 덧셈을 하는 간단한 함수 예제입니다.

 

2+3 = 5 라는 결과값이 나오게 되겠죠.

 

 

하지만 코딩을 하다가 보면은 일일이 인자값을 넘겨주기 어려울 수 있습니다.

 

따라서 처리하는 중간 과정에서 생성된 배열에서 인자를 생성하는 과정을 거쳐야 하는 일이 생깁니다.

 

이를 처리하기 위한 방법을 알려드리도록 하겠습니다.

 

 

우선 함수의 인자가 x와 y 두 개의 인자로 이루어져 있습니다.

 

이를 지칭하는 dictionary 변수를 생성하도록 하죠.

 

param_keys = {'x': 0, 'y': 0}

 

기본 인자값으로 동일하게 0을 삽입했습니다.

 

result = add_func(param_keys)

 

지금과 같은 상황에서 위와 같이 변수를 삽입하게 된다면

x의 인자값만 받고 y에 대한 인자값은 받지 못했다는 에러가 나게 될 것입니다.

 

 

일일이 x, y 값을 입력하지 않고 함수의 인자를 모두 입력하기 위해서는 다음과 같은 코드를 작성해야 합니다.

 

def add_func(x,y):
    result = x + y
    return result

param_keys = {'x': 0, 'y': 0}
# 키 값만 저장하고 싶다면 param_keys = param_keys.keys()

result = add_func(**dict(zip(param_keys, [2, 3])))
print(f"Add Function result is {result}.")

 

직접 값을 입력하지 않고도 사전 변수 목록과 중간에 처리할 데이터 배열만 존재한다면 

 

** 오퍼레이터와 dict(), zip() 을 사용하여 인자값을 전달할 수 있습니다.

 

print(dict(zip(keys, [2, 3])))

dict()와 zip()만을 사용하게 되면 다음과 같이 dictionary 형태로 저장이 됩니다.

 

이때 앞에 ** 오퍼레이터를 사용하게 되면 dictionary를 함수의 인자값으로 넘길 수 있게 됩니다.

 

아래의 파이썬 공식 documentation을 보면 자세한 사항을 알 수 있습니다.

 

https://docs.python.org/2/tutorial/controlflow.html#unpacking-argument-lists

 

4. More Control Flow Tools — Python 2.7.18 documentation

 

docs.python.org

 

반응형