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

StackOverflow https://stackoverflow.com/questions/38508

  •  09-06-2019
  •  | 
  •  

문제

문자열에 대해 뭔가를 수행해야 하는 함수가 있습니다.작업 성공 여부를 나타내는 부울 값을 반환하는 함수와 수정된 문자열도 반환해야 합니다.

C#에서는 문자열에 out 매개변수를 사용하지만 Python에는 이에 상응하는 매개변수가 없습니다.저는 아직 Python을 처음 접했고 제가 생각할 수 있는 유일한 것은 부울 및 수정된 문자열이 포함된 튜플을 반환하는 것입니다.

관련 질문: 함수가 여러 값을 반환하는 것이 파이썬적인가요?

도움이 되었습니까?

해결책

def f(in_str):
    out_str = in_str.upper()
    return True, out_str # Creates tuple automatically

succeeded, b = f("a") # Automatic tuple unpacking

다른 팁

작업이 성공하지 못한 경우 예외를 발생시키지 않는 이유는 무엇입니까?개인적으로 나는 함수에서 둘 이상의 값을 반환해야 하는 경우 작업을 올바른 방식으로 수행하고 있는지 아니면 개체를 사용하고 있는지 다시 생각해 봐야 한다고 생각하는 경향이 있습니다.

하지만 더 직접적으로 말하자면, 예외를 던지면 문제를 처리하도록 강요하게 됩니다.실패를 나타내는 값을 반환하려고 하면 누군가가 값을 확인하지 못해 디버깅하기 어려운 오류가 발생할 가능성이 매우 높습니다.

튜플을 반환합니다.

def f(x):
    # do stuff
    return (True, modified_string)

success, modified_string = f(something)

튜플을 반환하는 것은 Python에서 이를 수행하는 일반적인 방법입니다.

실패에 대한 예외를 발생시키는 것은 계속 진행하는 좋은 방법 중 하나이며, 다양한 값을 반환하는 경우 튜플을 반환할 수 있습니다.귀하가 언급한 특정 사례에 대해 저는 종종 중간 접근 방식을 취합니다.성공하면 수정된 문자열을 반환하고, 실패하면 None을 반환합니다.나는 실패 시 char에 대한 NULL 포인터를 반환하고 싶은 재구성되지 않은 C 프로그래머입니다.

더 큰 라이브러리의 일부로 사용되고 다른 개발자가 사용할 루틴을 작성하는 경우 실패 시 예외가 발생합니다.내가 직접 개사료를 먹을 때 아마도 다른 유형을 반환하고 반환 시 테스트를 하게 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top