Pada perilaku aktual, tidak ada perbedaan. Mereka semua kembali None
dan hanya itu. Namun, ada waktu dan tempat untuk semua ini. Instruksi berikut pada dasarnya adalah bagaimana metode yang berbeda harus digunakan (atau setidaknya bagaimana saya diajarkan mereka harus digunakan), tetapi mereka bukan aturan mutlak sehingga Anda dapat mencampurnya jika Anda merasa perlu.
Menggunakan return None
Ini mengatakan bahwa fungsi tersebut memang dimaksudkan untuk mengembalikan nilai untuk digunakan nanti, dan dalam hal ini kembali None
. Nilai None
ini kemudian dapat digunakan di tempat lain. return None
tidak pernah digunakan jika tidak ada kemungkinan nilai pengembalian lain dari fungsi.
Pada contoh berikut, kita kembali person
's mother
jika person
diberikan adalah manusia. Jika itu bukan manusia, kita kembali None
karena person
tidak memiliki mother
(misalkan hewan itu bukan hewan atau sesuatu).
def get_mother(person):
if is_human(person):
return person.mother
else:
return None
Menggunakan return
Ini digunakan untuk alasan yang sama seperti break
di loop. Nilai kembali tidak masalah dan Anda hanya ingin keluar dari seluruh fungsi. Ini sangat berguna di beberapa tempat, meskipun Anda tidak terlalu membutuhkannya.
Kami punya 15 prisoners
dan kami tahu salah satu dari mereka memiliki pisau. Kami memutari masing-masing prisoner
satu per satu untuk memeriksa apakah mereka memiliki pisau. Jika kita memukul orang itu dengan pisau, kita bisa keluar dari fungsinya karena kita tahu hanya ada satu pisau dan tidak ada alasan untuk memeriksa sisa pisau itu prisoners
. Jika kami tidak menemukan prisoner
dengan pisau, kami meningkatkan peringatan. Ini bisa dilakukan dengan berbagai cara dan menggunakan return
mungkin bahkan bukan cara terbaik, tapi itu hanya contoh untuk menunjukkan cara menggunakan return
untuk keluar dari suatu fungsi.
def find_prisoner_with_knife(prisoners):
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition()
return # no need to check rest of the prisoners nor raise an alert
raise_alert()
Catatan: Anda tidak boleh melakukannya var = find_prisoner_with_knife()
, karena nilai pengembalian tidak dimaksudkan untuk ditangkap.
Tidak menggunakan return
sama sekali
Ini juga akan kembali None
, tetapi nilai itu tidak dimaksudkan untuk digunakan atau ditangkap. Ini berarti bahwa fungsi berakhir dengan sukses. Ini pada dasarnya sama dengan return
di void
fungsi dalam bahasa seperti C ++ atau Java.
Dalam contoh berikut, kami menetapkan nama ibu seseorang dan kemudian fungsi keluar setelah selesai dengan sukses.
def set_mother(person, mother):
if is_human(person):
person.mother = mother
Catatan: Anda tidak boleh melakukannya var = set_mother(my_person, my_mother)
, karena nilai pengembalian tidak dimaksudkan untuk ditangkap.
return None
menyiratkan kepada saya bahwa fungsi kadang-kadang memiliki nilai non-None
kembali, tetapi di lokasireturn None
, tidak ada nilai balik tersebut. Menulis tidakreturn
sama sekali menyiratkan kepada saya tidak pernah ada nilai pengembalian yang menarik, agak seperti "prosedur" yang bertentangan dengan "fungsi".return
menyiratkan untuk ada lebih awal dari "prosedur" seperti pada poin sebelumnya.