Memutuskan antara 'cuba' dan 'jika' Bina dalam Python
Apabila menguji jika pembolehubah mempunyai nilai, pilih antara 'cuba' atau binaan 'jika' boleh menjadi bahan perdebatan. Mari kita mendalami rasional di sebalik menggunakan setiap pendekatan.
EAFP (Lebih Mudah Meminta Pengampunan daripada Izin) lwn. LBYL (Lihat Sebelum Anda Lompat)
Python menggalakkan EAFP atas LBYL. EAFP melibatkan percubaan operasi dan menangkap pengecualian jika ia berlaku. LBYL, sebaliknya, melibatkan pemeriksaan keadaan terlebih dahulu sebelum mencuba operasi.
Pertimbangan Kecekapan dan Kebolehbacaan
Aspek kecekapan bergantung pada jangkaan kekerapan pengecualian. Jika pengecualian jarang berlaku, overhed blok cuba/kecuali mungkin dinafikan oleh kelajuan pernyataan if. Walau bagaimanapun, jika pengecualian adalah lebih biasa, cuba/kecuali mungkin lebih pantas kerana ia mengelakkan overhed syarat menyemak penyata if.
Contoh
Pertimbangkan kod berikut yang menyemak sama ada fungsi mengembalikan senarai:
result = function() if result: for r in result: # Process items
result = function() try: for r in result: # Process items except TypeError: pass
Jika 'hasil' berkemungkinan menjadi senarai pada kebanyakan masa, pendekatan cuba/kecuali adalah lebih cekap. Walau bagaimanapun, jika 'hasil' selalunya Tiada, pernyataan if adalah lebih baik.
Pengukuran Masa
Pengukuran masa menunjukkan bahawa cuba/kecuali adalah lebih cepat apabila pengecualian benar-benar luar biasa , manakala penyataan jika lebih cepat apabila syarat biasa dipenuhi.
Kesimpulan
Keputusan antara 'cuba' dan 'jika' bergantung pada:
Secara amnya, EAFP (cuba/kecuali) boleh menjadi lebih "pythonic " pendekatan, terutamanya apabila pengecualian jarang berlaku. Walau bagaimanapun, LBYL (jika pernyataan) mungkin lebih sesuai apabila pengecualian adalah perkara biasa.
Atas ialah kandungan terperinci Bilakah Anda Harus Menggunakan 'cuba' dan Bilakah Anda Harus Menggunakan 'jika' dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!