30. 파이썬 입출력값에 따른 함수의 형태 – 네번째

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

파이썬 입출력값에 따른 함수의 형태는 알아야 할게 많네요
벌써 네번째 시간입니다.
지난 시간에 이어서 이번에는 키워드 매개변수 kwargs 에 대해 공부해 보겠습니다.

파이썬 입출력값에 따른 함수의 형태

키워드 매개변수 kwargs

지난번 시간에는 입력값을 여러 개 받기 위해 매개변수 앞에 * 을 붙였습니다.
이번에 공부할 키워드 매개변수를 사용하기 위해서는 매개변수 앞에 별을 두개를 붙입니다(**)

키워드 매개변수 kwargs 예

Python
>>> def print_kwargs(**kwargs):
...     print(kwargs)
...

위 코드에 나오는 print_kwargs 함수는 매개변수 **kwargs 를 출력하는 단순한 함수 입니다.
print_kwargs 함수를 사용해 보겠습니다.

Python
>>> print_kwargs(a=3)
{'a': 3}
>>> print_kwargs(name='python', age=10)
{'name': 'python', 'age': 10}

위 사용된 예를 보면 print_kwargs 함수에 입력이 a=3 이라고 하면 kwargs 는 {‘a’: 3} 이라고 하는 딕셔너리가 생성이 됩니다.
그리고 name=’python’, age=10 이라고 사용을 하게 되면 {‘name’: ‘python’, ‘age’: 10} 이라는 딕셔너리가 생성이 됩니다.
이처럼 **kwargs 처럼 매개변수 앞에 별 두개(**)를 사용하게 되면 매개변수 kwargs 는 딕셔너리가 되고 모든 key=value 의 형태의 입력되는 값들이 그 딕셔너리에 저장이 되는 것입니다.

이전 포스팅에서의 args 처럼 kwargs 는 keyword arguments 의 약자로 관례적으로 사용된다는 것은 참고로만 알고 계시면 될 듯 합니다

함수의 리턴값은 언제나 하나

이게 무슨 말일까요?
다음 코드를 보겠습니다

Python
>>> def add_and_mul(a, b):
...    return a+b, a*b

위 코드는 add_and_mul 함수에서 2개의 입력 인수를 받아서 더하기와 곱셈한 결과를 리턴하는 함수입니다.
add_and_mul 함수를 아래 처럼 호출해 보겠습니다

Python
>>> result = add_and_mul(100, 200)

여기서 result 라는 리턴값은 하나만 쓰였습니다.
리턴값이 a+b, a*b 인데 문제가 생길 수도 있다고 생각들겠지만 오류는 발생하지 않습니다.
왜그러냐면 함수의 리턴값은 2개가 아니라 언제나 1개라는데 있습니다.
add_and_mul 함수의 리턴값 a+b 와 a*b 는 튜플값 하나인 (a+b, a*b) 로 리턴이 됩니다
결국 리턴값은 하나 라는 겁니다

아래처럼 result 를 print 해보겠습니다.

Python
>>> print(result)
(300, 20000)

위처럼 결과값으로 (300, 20000) 이라는 튜플 값을 가지게 됩니다.
만약에 이렇게 나오는 하나의 튜플값을 2개로 분리해서 보고 싶다면 다음처럼 하면 됩니다.

Python
>>> result1, result2 = add_and_mul(100, 200)

위 코드처럼 result1 과 result2 로 나누어서 호출을 하게되면 result1 은 100, result2 는 200 의 값을 가지게 됩니다.
다른 예를 보겠습니다.

Python
>>> def add_and_mul(a,b):
...     return a+b
...     return a*b
...
>>>

만약 위 코드 처럼 return 문을 2번 사용해서 2개의 리턴값을 돌려주지는 않을까 하는 생각이 들수도 있지만 파이썬에서는 위처럼 함수를 사용하면 어리석다고 해야 할 겁니다.
다음 코드를 보면 알 수 있습니다.

Python
>>> result = add_and_mul(100, 200)
print(result)
300

add_and_mul(100, 200) 를 실행해 보면 리턴값으로 300 만 나옵니다.
두번째 리턴문인 return a*b 는 실행이 안되었습니다.
앞서 리턴값은 언제나 하나 라는게 또 증명이 되네요
위 코드는 아래 코드랑 똑같습니다.

Python
>>> def add_and_mul(a,b):
...     return a+b
...
>>>

왜 이렇게 되냐하면 함수는 return 문을 만나는 순간 리턴값을 돌려주고 함수를 빠져나가게 되기 때문입니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
30. 파이썬 입출력값에 따른 함수의 형태 – 네번째

Leave a Comment