기본적으로 파이썬에서 함수의 인자를 넘기기 위해서는 다음과 같이 진행하게 됩니다.
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
'Python3 관련' 카테고리의 다른 글
[Python3] 파이썬 데코레이터, @ 의미, @ 사용법 (0) | 2022.07.31 |
---|---|
[python3] Unit test로 모듈 검증, 파이썬 assert (0) | 2022.03.27 |
[Python3] python3에서 .json 파일 다루기 - 하이퍼파라메타 저장 (0) | 2022.02.21 |
파이썬에서 Matplotlib를 사용해 gif 파일 만들기! (0) | 2022.02.01 |
python csv 처리, 파일 저장 - 파이썬에서 엑셀 데이터 처리! (0) | 2022.01.21 |