Pada perilaku aktual, tidak ada perbedaan. Mereka semua kembali Nonedan 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 Noneini kemudian dapat digunakan di tempat lain. return Nonetidak pernah digunakan jika tidak ada kemungkinan nilai pengembalian lain dari fungsi.
Pada contoh berikut, kita kembali person's motherjika persondiberikan adalah manusia. Jika itu bukan manusia, kita kembali Nonekarena persontidak 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 breakdi 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 prisonersdan kami tahu salah satu dari mereka memiliki pisau. Kami memutari masing-masing prisonersatu 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 prisonerdengan pisau, kami meningkatkan peringatan. Ini bisa dilakukan dengan berbagai cara dan menggunakan returnmungkin bahkan bukan cara terbaik, tapi itu hanya contoh untuk menunjukkan cara menggunakan returnuntuk 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 returnsama 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 returndi voidfungsi 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 Nonemenyiratkan kepada saya bahwa fungsi kadang-kadang memiliki nilai non-Nonekembali, tetapi di lokasireturn None, tidak ada nilai balik tersebut. Menulis tidakreturnsama sekali menyiratkan kepada saya tidak pernah ada nilai pengembalian yang menarik, agak seperti "prosedur" yang bertentangan dengan "fungsi".returnmenyiratkan untuk ada lebih awal dari "prosedur" seperti pada poin sebelumnya.