source

Python 함수에서 두 개의 값을 반환하려면 어떻게 해야 합니까?

bestscript 2023. 1. 15. 17:28

Python 함수에서 두 개의 값을 반환하려면 어떻게 해야 합니까?

함수에서 두 개의 값을 두 개의 다른 변수로 반환하려고 합니다.예를 들어 다음과 같습니다.

def select_choice():
    loop = 1
    row = 0
    while loop == 1:
        print('''Choose from the following options?:
                 1. Row 1
                 2. Row 2
                 3. Row 3''')

        row = int(input("Which row would you like to move the card from?: "))
        if row == 1:
            i = 2
            card = list_a[-1]
        elif row == 2:
            i = 1
            card = list_b[-1]
        elif row == 3:
            i = 0
            card = list_c[-1]
        return i
        return card

그리고 저는 이 값을 따로 사용할 수 있기를 원합니다.사용하려고 했을 때return i, card, 이것은 a를 반환합니다.tuple그리고 이건 내가 원하는게 아니야

2개의 값은 반환할 수 없지만,tuple또는list콜 후에 개봉합니다.

def select_choice():
    ...
    return i, card  # or [i, card]

my_i, my_card = select_choice()

온라인.return i, card i, card태플을 작성하는 것을 의미합니다.괄호는 다음과 같이 사용할 수도 있습니다.return (i, card)단, 튜플은 콤마로 작성되므로 paren은 필수가 아닙니다.그러나 paren을 사용하여 코드를 보다 쉽게 읽을 수 있도록 하거나 여러 줄로 태플을 분할할 수 있습니다.회선에도 동일하게 적용됩니다.my_i, my_card = select_choice().

세 개 이상의 값을 반환하려면 명명된 튜플의 사용을 고려하십시오.함수의 호출자가 이름별로 반환된 값의 필드에 액세스할 수 있으므로 더 읽기 쉽게 됩니다.인덱스별로도 태플 항목에 액세스할 수 있습니다.예를 들어,Schema.loads메서드 마시멜로 프레임워크는 a를 반환합니다.이렇게 하면 다음 작업을 수행할 수 있습니다.

data, errors = MySchema.loads(request.json())
if errors:
    ...

또는

result = MySchema.loads(request.json())
if result.errors:
    ...
else:
    # use `result.data`

기타의 경우 반품할 수 있습니다.dict기능에서:

def select_choice():
    ...
    return {'i': i, 'card': card, 'other_field': other_field, ...}

그러나 데이터를 래핑하는 유틸리티 클래스의 인스턴스(또는 Pydantic/dataclass 모델 인스턴스)를 반환하는 것을 고려할 수 있습니다.

class ChoiceData():
    def __init__(self, i, card, other_field, ...):
        # you can put here some validation logic
        self.i = i
        self.card = card
        self.other_field = other_field
        ...

def select_choice():
    ...
    return ChoiceData(i, card, other_field, ...)

choice_data = select_choice()
print(choice_data.i, choice_data.card)

함수에서 두 개의 값을 두 개의 다른 변수로 반환하려고 합니다.

발신측에서는 어떻게 보일 것 같습니까?글씨를 쓸 수 없다a = select_choice(); b = select_choice()그러면 함수가 두 번 호출되니까요

값은 "변수"로 반환되지 않습니다. Python은 그렇게 작동하지 않습니다.함수는 값(개체)을 반환합니다.변수는 특정 컨텍스트에서 값의 이름일 뿐입니다.함수를 호출하여 반환값을 어딘가에 할당할 경우 수신된 값에 호출 컨텍스트의 이름을 지정합니다.함수는 값을 "변수에" 넣는 것이 아니라 할당하는 것입니다(변수가 값을 "저장"하는 것이 아니라 이름만 저장함).

사용하려고 했을 때return i, card, 이것은 a를 반환합니다.tuple그리고 이건 내가 원하는 게 아니야

사실, 그게 바로 네가 원하는 거야.당신이 해야 할 일은 단지 그 약을tuple다시 떨어져요.

그리고 저는 이 값을 따로 사용할 수 있기를 원합니다.

이 요.tuple.

가장 쉬운 방법은 포장을 푸는 것입니다.

a, b = select_choice()

가가원원원원원플플플같같같같같같같 。「 」를 사용하고 return (i, card)두를 얻을 수 , 으면 2번입니다.

i, card = select_choice()
def test():
    ....
    return r1, r2, r3, ....

>> ret_val = test()
>> print ret_val
(r1, r2, r3, ....)

이제 태플로 네가 좋아하는 모든 것을 할 수 있어.

def test():
    r1 = 1
    r2 = 2
    r3 = 3
    return r1, r2, r3

x,y,z = test()
print x
print y
print z


> test.py 
1
2
3

그리고 이것은 대안이다.목록으로 반환할 경우 값을 쉽게 얻을 수 있습니다.

def select_choice():
    ...
    return [i, card]

values = select_choice()

print values[0]
print values[1]

이거 드셔보세요

class select_choice():
    return x, y

a, b = test()

목록을 사용하여 둘 이상의 값을 반환할 수도 있습니다.아래 코드를 확인합니다.

def newFn():    #your function
  result = []    #defining blank list which is to be return
  r1 = 'return1'    #first value
  r2 = 'return2'    #second value
  result.append(r1)    #adding first value in list
  result.append(r2)    #adding second value in list
  return result    #returning your list

ret_val1 = newFn()[1]    #you can get any desired result from it
print ret_val1    #print/manipulate your your result

언급URL : https://stackoverflow.com/questions/9752958/how-can-i-return-two-values-from-a-function-in-python