İki değer döndüremezsiniz, ancak çağrıdan sonra a tuple
veya a döndürebilir list
ve paketten çıkarabilirsiniz :
def select_choice():
...
return i, card # or [i, card]
my_i, my_card = select_choice()
On line return i, card
i, card
bir 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.loads
yöntemde Marshmallow çerçevesi UnmarshalResult
bir 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 dict
iş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)