Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 여러 값을 반환합니까?

<시간/>

Python 함수는 여러 값을 반환할 수 있습니다. 이러한 값은 변수에 직접 저장할 수 있습니다. 함수는 변수를 반환하도록 제한되지 않으며 0, 1, 2 또는 그 이상의 값을 반환할 수 있습니다.

이것은 C++ 또는 Java와 같은 다른 많은 프로그래밍 언어에서 사용할 수 없는 여러 값/변수를 반환하는 python의 기본 속성입니다.

함수에서 여러 값을 반환하려면 요구 사항에 따라 튜플, 목록 또는 사전 개체를 반환할 수 있습니다.

방법 1:튜플 사용

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

그러나 위의 프로그램은 반환되는 값의 수가 증가함에 따라 문제가 됩니다. 6개 또는 7개의 값을 반환하려는 경우? 물론, 우리는 그것들을 계속해서 튜플링할 수 있지만, 어떤 값이 어디에 있는지 잊어버리기 쉽습니다. 또한 우리가 원하는 곳 어디에서나 포장을 푸는 것이 조금 지저분해집니다.

방법 2:사전 사용

또 다른 더 나은 솔루션은 사전을 사용하는 것입니다.

def func(x):
   y0 = x+ 1
   y1 = x * 3
   y2 = y0 ** 3
   return {'y0': y0, 'y1': y1, 'y2': y2}

이제 반환된 개체의 특정 구성원을 투영할 수 있는 메커니즘이 있습니다.

예를 들어 -

result[‘y1’]

방법 3:클래스 사용

또 다른 옵션은 특수 구조를 반환할 수 있는 클래스를 사용하는 것입니다.

class ReturnValue(obj):
   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 ** 3
   return ReturnValue (y0, y1, y2)

방법 4:목록 사용

또 다른 방법은 목록을 사용하는 것입니다.

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

방법 5:생성기 사용

여러 값을 하나씩 반환하기 위해 yield를 사용하는 이 옵션을 선택할 수 있습니다. 너무 많은 값을 반환해야 하는 경우 시퀀스를 사용하면 시스템 리소스가 많이 소모될 수 있습니다.

def func(x):
   y0 = x + 1
   yield y0
   yield x * 3
   yield y0 ** 3

함수에서 여러 값을 반환하는 가장 좋은 방법은 무엇입니까?

그것은 모두 당신의 취향이나 요구 사항, 어떤 방법을 더 좋아하는지에 달려 있습니다. 설정 작업이 덜 필요하므로 사전 경로를 선택할 수 있습니다. 또는 사전이 나타내는 것을 혼동하는 것을 방지하는 데 도움이 될 수 있는 클래스 경로를 선택할 수 있습니다. 또는 생성기를 선택하여 값을 하나씩 생성할 수 있습니다.