No puede devolver dos valores, pero puede devolver a tuple
o a list
y descomprimirlo después de la llamada:
def select_choice():
...
return i, card # or [i, card]
my_i, my_card = select_choice()
En línea return i, card
i, card
significa crear una tupla. También puede usar paréntesis return (i, card)
, pero las tuplas se crean por comas, por lo que los parens no son obligatorios. Pero puede usar parens para hacer que su código sea más legible o para dividir la tupla en varias líneas. Lo mismo se aplica a la línea my_i, my_card = select_choice()
.
Si desea devolver más de dos valores, considere usar una tupla con nombre . Permitirá al llamante de la función acceder a los campos del valor devuelto por nombre, lo que es más legible. Aún puede acceder a los elementos de la tupla por índice. Por ejemplo, en el Schema.loads
método Marshmallow framework devuelve un UnmarshalResult
que es un namedtuple
. Entonces puedes hacer:
data, errors = MySchema.loads(request.json())
if errors:
...
o
result = MySchema.loads(request.json())
if result.errors:
...
else:
# use `result.data`
En otros casos, puede devolver un dict
de su función:
def select_choice():
...
return {'i': i, 'card': card, 'other_field': other_field, ...}
Pero es posible que desee considerar devolver una instancia de una clase de utilidad, que envuelve sus datos:
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)