함수에서 1개 이상의 값을 return 하는 방법

조회수 21552회

다들 함수에서 여러 개 값을 return 할 때 어떤 방법을 쓰고 계신가요? 제가 쓰고 있는 방법은 다음과 같습니다.

1. tuple을 쓰는 법

def f(x):
  y0 = x + 1
  y1 = x * 3
  y2 = y0 ** y3
  return (y0,y1,y2)

원소가 많아지면 몇 번째 원소가 어느 값을 저장하고 있는지 기억하는 게 점점 힘들어져서 이 방법은 투플이 길어질수록 비효율적입니다. 또 튜플을 unpack 하는 과정도 그렇게 보기 좋지 않습니다.

2. dictionary를 쓰는 법

def g(x):
  y0 = x + 1
  y1 = x * 3
  y2 = y0 ** y3
  return {'return0':y0, 'return1':y1 ,'return2':y2 }

첫 번째 방법보다 각 원소의 의미를 알아내기 쉽습니다.

3. class를 쓰는 방법

class ReturnValue(object): #return 될 값을 위한 클래스 정의
  def __init__(self, y0, y1, y2):
     self.y0 = y0
     self.y1 = y1
     self.y2 = y2

def g(x):
  y0 = x + 1
  y1 = x * 3
  y2 = y0 ** y3
  return ReturnValue(y0, y1, y2)

list를 쓰는 법

def h(x):
  result = [x + 1]
  result.append(x * 3)
  result.append(y0 ** y3)
  return result

1의 tuple을 쓰는 방법과 비슷합니다. 다만 리스트의 element가 서로 다른 타입이 될 수 있으므로 별로 좋지 않은 방법입니다. 그리고 tuple의 경우 return 받은 값을 바꿀 수 없는 반면 list의 경우 return 받은 값을 바꿀 수 있습니다.




보통 저는 2. dictionary를 주로 쓰는데요. 다른 분들은 어떤 걸 선호하시는지, 제가 쓰고 있는 방법 외에 다른 방법을 쓰시는지 궁금합니다.

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)