Saya memiliki fungsi dalam python yang dapat mengembalikan a bool
atau a list
. Apakah ada cara untuk menentukan jenis pengembalian menggunakan petunjuk jenis.
Misalnya, apakah ini cara yang benar untuk melakukannya?
def foo(id) -> list or bool:
...
python
python-3.x
return-type
type-hinting
python-3.5
Yahya Uddin
sumber
sumber
Jawaban:
Dari dokumentasi
Oleh karena itu cara yang tepat untuk mewakili lebih dari satu tipe data kembali adalah
Namun harap dicatat bahwa pengetikan tidak ditegakkan. Python terus menjadi bahasa yang diketik secara dinamis. Sintaksis penjelasan telah dikembangkan untuk membantu selama pengembangan kode sebelum dirilis ke dalam produksi. Seperti yang dinyatakan PEP 484, "tidak ada pemeriksaan tipe yang terjadi saat runtime."
Seperti yang Anda lihat, saya memberikan nilai int dan mengembalikan str. Namun
__annotations__
akan diatur ke nilai masing-masing.Silakan membaca PEP 483 untuk informasi lebih lanjut tentang petunjuk. Juga lihat Apa itu petunjuk Jenis dalam Python 3.5 ?
Harap perhatikan bahwa ini hanya tersedia untuk Python 3.5 dan yang lebih tinggi. Ini disebutkan dengan jelas dalam PEP 484 .
sumber
Pernyataan yang
def foo(client_id: str) -> list or bool:
dievaluasi setara dengandef foo(client_id: str) -> list:
dan karenanya tidak akan melakukan apa yang Anda inginkan.Cara asli untuk menggambarkan petunjuk tipe "baik A atau B" adalah Union (terima kasih kepada Bhargav Rao):
Saya tidak ingin menjadi pria "Kenapa Anda ingin melakukan ini", tetapi mungkin memiliki 2 tipe pengembalian bukan yang Anda inginkan:
Jika Anda ingin mengembalikan bool untuk mengindikasikan beberapa jenis kasus kesalahan khusus, pertimbangkan untuk menggunakan Pengecualian. Jika Anda ingin mengembalikan bool sebagai nilai khusus, mungkin daftar kosong akan menjadi representasi yang baik. Anda juga dapat menunjukkan bahwa
None
dapat dikembalikan bersamaOptional[list]
sumber
Seandainya ada orang yang mendarat di sini untuk mencari "bagaimana cara menentukan jenis nilai pengembalian ganda?", Gunakan
Tuple[type_value1, ..., type_valueN]
Info lebih lanjut: https://code-examples.net/en/q/2651e60
sumber