파이썬에서는 하나의 함수에서 여러 개의 값을 동시에 반환할 수 있습니다. 일반적으로 튜플(tuple), 리스트(list), 딕셔너리(dictionary), 또는 사용자 정의 클래스의 객체 형태로 반환하는 방식이 많이 사용됩니다.
각 방법별로 예제 코드와 함께 자세히 살펴보겠습니다.
1. 튜플(Tuple)로 반환하기
파이썬에서 가장 간단하고 널리 쓰이는 방법입니다. 쉼표로 구분하여 여러 값을 반환하면 자동으로 튜플이 생성됩니다.
>>> def function(): a=10; b=10 return a,b >>> x=function() >>> type(x) <class 'tuple'> >>> x (10, 10) >>> x,y=function() >>> x,y (10, 10)
위 예제처럼 반환된 튜플을 x, y = function()과 같은 형태로 받으면 언패킹(unpacking)을 통해 각 변수에 개별적으로 값을 할당할 수 있습니다.
2. 리스트(List)로 반환하기
대괄호([])로 묶어 반환하면 리스트 형태로 여러 값을 전달할 수 있습니다. 반환 후에 요소를 추가하거나 수정해야 하는 경우에 유용합니다.
>>> def function(): a=10; b=10 return [a,b] >>> x=function() >>> x [10, 10] >>> type(x) <class 'list'>
3. 딕셔너리(Dictionary)로 반환하기
키(key)와 값(value)의 쌍으로 데이터를 관리하고 싶다면 딕셔너리 형태로 반환하는 것이 좋습니다. 어떤 값이 어떤 의미를 가지는지 명확하게 표현할 수 있다는 장점이 있습니다.
>>> def function():
d=dict()
a=10; b=10
d['a']=a; d['b']=b
return d
>>> x=function()
>>> x
{'a': 10, 'b': 10}
>>> type(x)
<class 'dict'>4. 사용자 정의 클래스 객체로 반환하기
여러 값이 서로 연관된 데이터라면, 직접 정의한 클래스의 객체로 묶어서 반환할 수도 있습니다. 속성 이름을 통해 값에 접근할 수 있어 코드의 가독성과 유지보수성이 높아집니다.
>>> class tmp: def __init__(self, a,b): self.a=a self.b=b >>> def function(): a=10; b=10 t=tmp(a,b) return t >>> x=function() >>> type(x) <class '__main__.tmp'> >>> x.a 10 >>> x.b 10
마무리
정리하면, 파이썬에서는 함수가 여러 값을 반환해야 할 때 상황에 따라 적절한 자료구조를 선택하면 됩니다. 간단한 값 전달에는 튜플, 이후 수정이 필요한 경우에는 리스트, 의미 있는 이름으로 구분하고 싶을 때는 딕셔너리, 복잡하고 연관된 데이터는 사용자 정의 클래스 객체를 활용하는 것이 좋습니다.