여러 개의 입력값을 받는 함수 만들기

함수를 정의할 때 입력값이 한 개, 두 개, 이렇게 입력받을 값의 갯수가 정해지지 않는다면 어떻게 할까?

파이썬에서는 이러한 상황을 해결하기 위해 함수를 정의할 때, 파라미터 이름 앞에 ‘*‘문자를 붙여 정의해준다.

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


result1 = add_many(1, 2, 3)
print(result1)			#결과는 6

result2 = add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(result2)			#결과는 55

*파라미터이름 -> 이런 식으로 파라미터를 정의해주면 입력값이 몇 개이든 상관이 없어진다.

*args 처럼 정의한다면 함수 add_many에 전달되는 입력값을 전부 모아 튜플로 만들어준다. add_many(1,2,3)처럼 호출한다면 args는 (1,2,3)이 되는 것이다. (args는 임의의 이름, 어떤 이름을 정해주어도 상관없음)

*args 외에 또 다른 파라미터 설정하기

def add_and_mul(choice, *args) :
    if choice == 'add' :
        result = 0
        for i in args :
            result += i
        return result
    
    elif choice == 'mul':		#곱셈
        result = 1
        for i in args :
            result *= i
        return result
    
result1 = add_and_mul('add', 1,2,3,4,5)
print(result1)			#결과는 15

result2 = add_and_mul('mul', 1,2,3,4,5)
print(result2)			#결과는 120

choice 파라미터에 ‘add’가 전될되면 덧셈을, ‘mul’이 전달되면 곱셈을 진행시키는 함수이다. *args를 사용하여 몇 개의 값을 입력받든 choice에 따라 덧셈 혹은 곱셈을 하게 된다.

키워드 파라미터

키워드 파라미터를 사용할 때는 파라미터 앞에 ‘**’ 별 두개를 붙인다.

def print_kwargs(**kwargs):
    print(kwargs)
    
print_kwargs(a=1)
print_kwargs(name = '태헌', age=25 )

print_kwargs는 파라미터 kwargs를 출력하는 함수이다.

첫번째 호출의 결과는 {a : 1}

두번째 호출의 결과는 {name : ‘태헌’, age = 25}

모두 딕셔너리 형태로 만들어져서 출력되는 것을 알 수 있다.

즉, 함수를 정의할 때 파라미터 앞에 ‘**‘를 붙이면 그 파라미터는 딕셔너리가 되어 key=value 형태의 결과값이 그 딕셔너리에 저장된다.(역시 kwargs라는 이름은 관례적으로 사용하는 것이고 어떤 이름이든 상관없다.)