Python

Python 매개변수 *args, **kwargs 사용해보기

HYEPPY98 2022. 6. 22. 20:42

1. 매개변수 지정하여 호출해보자

 

함수를 호출할 때 매개변수를 지정할 수 있다.

 

- 일반적인 함수

def add(a, b):
    return a+b

 

- 매개변수 지정하여 호출하기. 10이 출력된다.

이렇게 하면 a, b의 순서에 상관없이 사용할 수 있다는 장점이 있다.

result = add(a=3, b=7)
print(result)

 

result = add(b=3, a=7)
print(result)

 

2. 입력값이 몇 개가 될지 모를 때

 

입력값이 몇 개가 될지 모를 때는,

매개변수 앞에 *을 붙여주자.

def 함수 이름(*매개변수):
    수행할 문장

 

2.1. (* 매개변수)로 여러 개의 입력값을 받는 함수를 만들어보자

 

add_many(1,2)면 3을, add_many(1,2,3)이면 6을 돌려주는 함수이다.

def add_many(*args):
    result = 0
    for i in args:
        result = result + i
    return result

--> '*매개변수'를 사용하면 입력값이 몇 개이든 상관 없다. 입력값을 전부 모아서 튜플로 만들어주기 때문이다!

*args는 매개변수를 뜻하는 arguments의 약자이며 관례적으로 자주 사용된다. 그러나 *pey, *hyeppy 등 사용자가 임의로 지정할 수 있다.

 

2.2. (매개변수, * 매개변수)로 여러 개의 입력값을 받는 함수를 만들어보자

 

*args 와 또 다른 매개변수를 함께 사용할 수 있다.

 

함수를 만들어보자!

def add_cal(choice, *args):
    if choice == 'add':
        result = 0
        for i in args:
            result += i
    elif choice == 'mul':
        result = 1
        for i in args:
            result *= i
            
    return result

 

함수를 사용해보자!

a = add_cal('add', 1,2,3,4,5)
print(a)
a = add_cal('mul', 2,3,100)
print(a)

 

2.3. (** kwargs 매개변수)로 여러 개의 입력값을 받는 함수를 만들어보자

 

kwargs는 keyword arguments의 약자이다.

args와 마찬가지로 관례적으로 사용되니 알아두자!

 

함수를 만들어보자!

def print_kwargs(**kwargs):
    print(kwargs)

 

함수를 사용해보자!

print_kwargs(a=1)

 

출력을 확인해보자!

{'a': 1}

 

------------한번 더 해보자!-------------

 

함수를 만들어보자!

def print_kwargs(**kwargs):
    print(kwargs)

 

함수를 사용해보자!

print_kwargs(name = 'foo', age = 3)

 

출력을 확인해보자!

{'name': 'foo', 'age': 3}

 

--> 이렇듯 매개변수 kwargs는 딕셔너리가 되고 모든 key=value 형태의 결괏값이 그 딕셔너리에 저장된다.

 

 

 

끝~><