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
함수에서 여러 값을 반환하는 가장 좋은 방법은 무엇입니까?
그것은 모두 당신의 취향이나 요구 사항, 어떤 방법을 더 좋아하는지에 달려 있습니다. 설정 작업이 덜 필요하므로 사전 경로를 선택할 수 있습니다. 또는 사전이 나타내는 것을 혼동하는 것을 방지하는 데 도움이 될 수 있는 클래스 경로를 선택할 수 있습니다. 또는 생성기를 선택하여 값을 하나씩 생성할 수 있습니다.