Anda tidak dapat mengembalikan dua nilai, tetapi Anda bisa mengembalikan a tuple
atau a list
dan membukanya setelah panggilan:
def select_choice():
...
return i, card # or [i, card]
my_i, my_card = select_choice()
On line return i, card
i, card
berarti membuat tuple. Anda juga dapat menggunakan tanda kurung seperti return (i, card)
, tetapi tupel dibuat dengan koma, jadi paren tidak wajib. Tetapi Anda dapat menggunakan parens untuk membuat kode Anda lebih mudah dibaca atau untuk membagi tuple menjadi beberapa baris. Hal yang sama berlaku untuk saluranmy_i, my_card = select_choice()
.
Jika Anda ingin mengembalikan lebih dari dua nilai, pertimbangkan untuk menggunakan tuple bernama . Ini akan memungkinkan pemanggil fungsi untuk mengakses bidang nilai yang dikembalikan dengan nama, yang lebih mudah dibaca. Anda masih dapat mengakses item tuple berdasarkan indeks. Sebagai contoh dalam Schema.loads
metode kerangka kerja Marshmallow mengembalikan suatu UnmarshalResult
yang namedtuple
. Jadi kamu bisa melakukan:
data, errors = MySchema.loads(request.json())
if errors:
...
atau
result = MySchema.loads(request.json())
if result.errors:
...
else:
# use `result.data`
Dalam kasus lain, Anda dapat mengembalikan a dict
dari fungsi Anda:
def select_choice():
...
return {'i': i, 'card': card, 'other_field': other_field, ...}
Tetapi Anda mungkin ingin mempertimbangkan untuk mengembalikan instance kelas utilitas, yang membungkus data Anda:
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)