지난 포스팅에 이어서 파이썬 입출력값에 따른 함수의 형태에 대해 공부해 보도록 하겠습니다.
입출력값에 따른 함수의 형태에는 일반적인 함수, 입력값이 없는 함수, 리턴값이 없는 함수, 입력값도 리턴값도 없는 함수, 그리고 매개변수를 지정하여 호출해 보는 것 까지 진행을 했습니다.
파이썬 입출력값에 따른 함수의 형태
입력값이 몇 개가 될지 모르는 함수의 형태 해결방법
프로그래밍을 하다보면 입력값이 한개가 될 때도 있지만 입력값이 여러 개일 경우도 있습니다.
이럴 때 그 입력값들을 다 더해 주는 함수가 있다고 생각해 봅시다.
그런데 여기서 문제는 입력받을 값들이 몇 개가 될지 모른다면 어떻게 해야 할까요?
당연히 프로그래밍을 할 때 상당히 난감해 지겠죠
파이썬에서는 이렇게 입력값이 몇 개가 될지 모를 때의 방법이 있습니다.
def 함수이름(*매개변수):
수행할 문장
...
기존에 했던 것과 차이점이 보이시나요?
위에 보시는 것 처럼 괄호 안에 매개변수를 입력하는데 앞에 * 이 붙어 있습니다.
입력값을 여러 개 받는 함수
입력값을 여러 개 받는 함수를 만들어 보겠습니다.
만약에 add_money(100, 200) 이면 300 을, add_money(100, 200, 300) 이면 600을, add_money(100, 200, 300, 400, 500, 600, 700, 800, 900, 1000) 이면 5500 을 리턴 하는 함수입니다.
>>> def add_money(*money):
... Wallets = 0
... for i in money:
... Wallets = Wallets + i
... return Wallets
...
>>>
위 코드는 앞서 설명한 매개변수 앞에 * 가 붙음으로서 입력값이 몇 개가 되던 상관이 없습니다.
*money 처럼 매개변수 앞에 * 을 붙이면 입력되는 값들을 모두 모아서 튜플로 만들어 주기 때문입니다.
만약 add_money(100, 200, 300) 처럼 함수를 사용을 하게 된다면 money 는 (100, 200, 300) 이 되고, add_money(100, 200, 300, 400, 500, 600, 700, 800, 900, 1000) 처럼 함수를 사용하게 된다면 money 는 (100, 200, 300, 400, 500, 600, 700, 800, 900, 1000) 이 되는 것 입니다.
*money 는 임의로 정한 변수 이름이기 때문에 변경은 당연히 가능합니다.
보통은 이런 경우 args라는 매개변수를 사용을 합니다.
args의 의미는 인수를 뜻하는 영어 단어 arguments 의 약자로 관례적으로 많이 사용한다고 합니다.
입력값을 여러 개 받는 함수 사용
앞에서 만든 add_money 함수를 사용해 보겠습니다
>>> Wallets = add_money(100, 200, 300)
>>> print(Wallets)
600
>>> Wallets = add_money(100, 200, 300, 400, 500, 600, 700, 800, 900, 1000)
>>> print(Wallets)
5500
위 코드를 사용한 것을 보면 add_money(100, 200, 300)으로 함수를 호출하면 600 을 리턴하게 되고, add_money(100, 200, 300, 400, 500, 600, 700, 800, 900, 1000) 으로 함수를 호출하면 5500 을 리턴하는 것을 확인 할 수 있습니다.
입력값을 여러 개 받는 매개변수 와 추가 변수 사용
입력값을 여러개 처리할때 앞서 def add_money(*money): 이렇게 *money 하나를 사용했었는데, 이 매개변수 하나만 사용할 수 있는 것은 아닙니다.
>>> def add_money(choice, *money):
... if choice == "add":
... Wallets = 0
... for i in money:
... Wallets = Wallets + i
... elif choice == "mul":
... Wallets = 1
... for i in money:
... Wallets = Wallets * i
... return Wallets
...
>>>
여러 개의 입력값을 받는 *money 매개변수 앞에 choice 라는 변수를 추가했습니다.
>>> Wallets = add_money('add', 100, 200, 300, 400, 500)
>>> print(Wallets)
1500
>>> Wallets = add_money('mul', 100, 200, 300, 400, 500)
>>> print(Wallets)
1200000000000
choice 변수를 추가한 위의 코드 사용 결과를 보면 ‘add’ 가 입력이 되면 모든 값을 더해서 1500 을 리턴하고, ‘mul’ 이 입력되 되면 모든 값을 곱해서 1200000000000 이 리턴되는 것을 확인 할 수 있습니다.
실제로 저런 함수를 써서 돈 좀 불려봤으면 좋겠네요 ㅎ
- 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
