Anda tidak dapat mengembalikan dua nilai, tetapi Anda bisa mengembalikan a tupleatau a listdan membukanya setelah panggilan:
def select_choice():
...
return i, card # or [i, card]
my_i, my_card = select_choice()
On line return i, card i, cardberarti 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.loadsmetode kerangka kerja Marshmallow mengembalikan suatu UnmarshalResultyang 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 dictdari 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)