Python 함수 return 여러개 - Python hamsu return yeoleogae

지금까지 함수의 결과를 변수에 저장할 때 값을 한 개만 저장했습니다. 이번에는 함수에서 값을 여러 개 반환하는 방법을 알아보겠습니다.

함수에서 값을 여러 개 반환할 때는 다음과 같이 return에 값이나 변수를 ,(콤마)로 구분해서 지정하면 됩니다.

def 함수이름(매개변수):
    return 반환값1, 반환값2

그럼 두 수를 더한 값과 뺀 값을 반환하는 함수를 만들어보겠습니다. 다음과 같이 return으로 ab를 더한 값과 a에서 b를 뺀 값을 반환하도록 만듭니다.

>>> def add_sub(a, b):
...     return a + b, a - b
...

이제 add_sub 함수에 10과 20을 넣고 결과를 xy에 저장합니다. 그리고 xy의 값을 출력해봅니다.

>>> x, y = add_sub(10, 20)
>>> x
30
>>> y
-10

x의 값을 출력해보면 10과 20을 더한 값인 30이 나오고, y의 값을 출력해보면 10에서 20을 뺀 값인 -10이 나옵니다. 이처럼 return은 값을 여러 개 반환할 수 있습니다.

add_sub 함수의 호출 과정을 그림으로 표현하면 다음과 같은 모양이 됩니다.

그림 29-4 반환값 여러 개를 변수 여러 개에 저장
Python 함수 return 여러개 - Python hamsu return yeoleogae

이렇게 return으로 값을 여러 개 반환하면 실제로는 튜플이 반환됩니다. 다음과 같이 add_sub의 결과를 변수 한 개에 저장해서 출력해보면 튜플이 반환되는 것을 볼 수 있습니다.

>>> x = add_sub(10, 20)
>>> x
(30, -10)

즉, 튜플이 변수 여러 개에 할당되는 특성을 이용한 것입니다(언패킹).

>>> x, y = (30, -10)
>>> x
30
>>> y
-10

참고 | 값 여러 개를 직접 반환하기

함수에서 값 여러 개를 직접 반환할 때는 다음과 같이 return에 튜플을 지정해주면 됩니다.

def one_two():
    return (1, 2)

사실 파이썬에서는 괄호 없이 값을 콤마로 구분하면 튜플이 되죠? 즉, 튜플 1, 2는 튜플 (1, 2)와 같습니다.

따라서 return 1, 2return (1, 2)와 의미가 같습니다.

def one_two():
    return 1, 2    # return (1, 2)와 같음

물론 return에서 리스트를 직접 반환해도 됩니다. 이때도 반환값을 변수 여러 개에 저장할 수 있습니다.

>>> def one_two():
...     return [1, 2]
...
>>> x, y = one_two()
>>> print(x, y)
1 2

파이썬의 함수에서 두개 이상의 값을 리턴하는 방법을 소개합니다.

1. 함수에서 여러 값을 Tuple로 리턴

아래와 같이 comma로 구분하여 여러 값을 리턴할 수 있습니다. 두개 이상의 값을 리턴하면 Tuple로 전달됩니다. 리턴되는 객체의 타입을 확인해보면 Tuple입니다.

def myFunc():
    return "hello", 100

result = myFunc()
print(type(result))

Output:

1.1 Example : Unpacking

함수가 두개 이상의 값을 리턴할 때, 아래와 같이 var1, var2 = func() 형식으로, 원하는 변수에 값을 받도록 할 수 있습니다. 리턴하는 순서대로 변수에 할당됩니다.

def myFunc():
    return "hello", 100

first, second = myFunc()
print(first)
print(second)

Output:

1.2 Example : Unpacking

3개 이상의 변수를 리턴할 때도 아래와 같이 comma로 구분하여 리턴할 수 있고, 각각의 변수로 값을 받을 수 있습니다. 그리고 모두 다른 타입의 객체를 리턴할 수도 있습니다.

def myFunc():
    return "hello", 100, ['a', 'b']

first, second, third = myFunc()

print(first)
print(second)
print(third)

Output:

2. 함수에서 리스트로 여러 값을 리턴

아래와 같이 1개의 리스트에 여러 값을 저장하여 리턴할 수 있습니다. 1개의 리스트가 리턴되며, 리턴되는 리스트에서 Index로 변수에 접근할 수 있습니다.

def myFunc():
    return ["hello", 100]

result = myFunc()

print(result)
print(result[0])
print(result[1])

Output:

3. 함수에서 딕셔너리로 여러 값을 리턴

1개의 딕셔너리에 여러 값을 여러 값을 저장하고 그 딕셔너리를 리턴할 수 있습니다. 딕셔너리가 리턴되면, 약속된 key로 변수에 접근할 수 있습니다.

def myFunc():
    return {"first": "hello", "second": 100}

result = myFunc()

print(result)
print(result["first"])
print(result["second"])

Output:

{'first': 'hello', 'second': 100}
hello
100

  • Python - asyncio로 비동기 처리 구현
  • Python - 딕셔너리 필터링, 3가지 방법
  • Python - 파일 이름 변경, 3가지 방법
  • Python - pathlib 실행 파일 경로, 작업 디렉토리 확인, 변경
  • Python - 빈 파일 생성, 3가지 방법
  • Python - 리스트 필터링, 3가지 방법
  • Python 명령행 인자 받기 (argparse)
  • Python - venv로 가상환경 구성 및 설정
  • Python - 싱글턴(Singleton) 패턴, 3가지 방법
  • Python - 리스트 복사 (deep, shallow copy)
  • Python - 리스트 역순으로 순회
  • Python - 객체 리스트 정렬
  • Python - 랜덤 float 생성 방법
  • Python - 패킹(packing), 언패킹(unpacking)
  • Python - 객체를 문자열(string)로 변환
  • Python - 리스트를 튜플로 변환, 3가지 방법
  • Python - 튜플을 리스트로 변환, 4가지 방법
  • Python - sum()으로 딕셔너리 합계 계산
  • Python - 2진수를 10진수로 변환
  • Python - Set 요소 추가, 삭제 방법
  • Python - Set 생성 및 초기화 방법

codechachaCopyright ©2019 codechacha