Apabila menentukan sama ada pembolehubah mempunyai nilai, pengaturcara sering menghadapi pilihan antara menggunakan cuba/kecuali atau jika / pembinaan lain. Artikel ini meneroka rasional di sebalik setiap pendekatan, berdasarkan prinsip EAFP (Lebih Mudah Meminta Pengampunan daripada Izin).
EAFP dan Cuba/Kecuali
EAFP ialah gaya pengekodan yang menjangka kemungkinan ralat dan mengendalikannya dengan cuba/kecuali blok. Pendekatan ini menganggap kehadiran nilai yang sah dan percubaan untuk beroperasi seperti biasa. Jika pengecualian berlaku, ia ditangkap dan dikendalikan dengan sewajarnya. Kaedah ini cekap apabila pengecualian jarang berlaku.
LBYL dan If/Else
Sebaliknya, LBYL (Lihat Sebelum Anda Lompat) melibatkan pemeriksaan keadaan sebelum menjalankan operasi. Menggunakan blok if/else, ia mengesahkan sama ada pembolehubah mempunyai nilai sebelum meneruskan. Walaupun pendekatan ini menghalang kemungkinan ralat, ia memperkenalkan overhed dalam situasi di mana pembolehubah berkemungkinan mempunyai nilai.
Perbandingan Kecekapan
Pengukuran empirikal menunjukkan bahawa jika/lain blok menanggung kos tetap, tidak kira sama ada ralat berlaku atau tidak. Sebaliknya, blok cuba/kecuali mempunyai kos persediaan yang rendah tetapi boleh menjadi lebih mahal apabila pengecualian berlaku. Oleh itu, memilih pendekatan yang sesuai bergantung pada kemungkinan menghadapi pengecualian.
Jika pengecualian dijangka jarang berlaku (kurang daripada 50%), menggunakan cuba/kecuali disyorkan untuk kecekapannya. Jika pengecualian lebih kerap, if/else ialah pilihan yang lebih baik untuk mengelakkan kesan prestasi yang tidak perlu.
Kesimpulan
Sama ada hendak menggunakan try/except atau if/else untuk pembolehubah penilaian bergantung pada jangkaan kekerapan pengecualian. Apabila pengecualian adalah luar biasa, EAFP dan cuba/kecuali memberikan penyelesaian yang lebih cepat dan ringkas. Walau bagaimanapun, untuk pengecualian yang lebih kerap, LBYL dan if/else menawarkan prestasi yang lebih baik dan pengendalian ralat yang jelas.
Atas ialah kandungan terperinci Cuba vs. Jika dalam Python: Bilakah Anda Harus Menggunakan Setiap untuk Penilaian Pembolehubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!