Python 함수에서 여러 반환 값을 반환하는 방법

사업

C에서 함수에서 여러 반환 값을 반환하는 것은 꽤 지루하지만 Python에서는 매우 쉽습니다.

쉼표로 구분된 반환

Python에서는 단순히 쉼표로 구분된 문자열 또는 숫자 목록을 반환할 수 있습니다.

예를 들어 아래와 같이 문자열과 숫자만 반환하는 함수를 정의하고 반환 후 각각을 쉼표로 구분합니다.

def test():
    return 'abc', 100

Python에서 쉼표로 구분된 값은 구문상 필요한 경우를 제외하고 괄호가 없는 튜플로 간주됩니다. 따라서 위 예제의 함수는 각 값을 요소로 포함하는 튜플을 반환합니다.

튜플을 생성하는 것은 대괄호가 아니라 쉼표입니다. 빈 튜플의 경우 또는 구문상의 모호성을 피하기 위해 필요한 경우를 제외하고 둥근 대괄호를 생략할 수 있습니다.
Built-in Types — Python 3.10.0 Documentation

반환 값의 유형은 튜플입니다.

result = test()

print(result)
print(type(result))
# ('abc', 100)
# <class 'tuple'>

각 요소는 함수에 의해 정의된 유형이 됩니다.

print(result[0])
print(type(result[0]))
# abc
# <class 'str'>

print(result[1])
print(type(result[1]))
# 100
# <class 'int'>

정의한 반환 값 수를 초과하는 인덱스를 지정하면 오류가 발생합니다.

# print(result[2])
# IndexError: tuple index out of range

압축을 풀 수 있고 여러 반환 값을 별도의 변수에 할당할 수 있습니다.

a, b = test()

print(a)
# abc

print(b)
# 100

두 개 대신 세 개 이상의 반환 값을 지정하려는 경우에도 마찬가지입니다.

def test2():
    return 'abc', 100, [0, 1, 2]

a, b, c = test2()

print(a)
# abc

print(b)
# 100

print(c)
# [0, 1, 2]

목록을 반환합니다.

[]이것으로 묶으면 반환 값은 튜플이 아닌 목록이 됩니다.

def test_list():
    return ['abc', 100]

result = test_list()

print(result)
print(type(result))
# ['abc', 100]
# <class 'list'>