İki değer döndüremezsiniz, ancak çağrıdan sonra a tupleveya a döndürebilir listve paketten çıkarabilirsiniz :
def select_choice():
...
return i, card # or [i, card]
my_i, my_card = select_choice()
On line return i, card i, cardbir demet oluşturmak demektir. Parantez gibi de kullanabilirsiniz return (i, card), ancak tizler virgül tarafından oluşturulur, bu nedenle parenler zorunlu değildir. Ancak kodunuzu daha okunabilir hale getirmek veya grubu birden çok satıra bölmek için parens kullanabilirsiniz. Aynısı çizgi için de geçerlidir my_i, my_card = select_choice().
İkiden fazla değer döndürmek istiyorsanız, adlandırılmış bir demet kullanmayı düşünün . İşlevin aracının döndürülen değerin alanlarına daha okunabilir şekilde erişmesine izin verir. Dizinin öğelerine yine de dizine göre erişebilirsiniz. Örneğin, Schema.loadsyöntemde Marshmallow çerçevesi UnmarshalResultbir namedtuple. Böylece şunları yapabilirsiniz:
data, errors = MySchema.loads(request.json())
if errors:
...
veya
result = MySchema.loads(request.json())
if result.errors:
...
else:
# use `result.data`
Diğer durumlarda dictişlevinizden a döndürebilirsiniz :
def select_choice():
...
return {'i': i, 'card': card, 'other_field': other_field, ...}
Ancak, verilerinizi saran bir yardımcı program sınıfının örneğini döndürmeyi düşünebilirsiniz:
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)