Perlukah Anda Menamakan Lambdas dalam Python?
Ekspresi Lambda menyediakan cara yang ringkas dan mudah untuk mentakrifkan fungsi tanpa nama dalam Python. Walau bagaimanapun, selalunya tergoda untuk memberikan nama kepada lambdas dalam fungsi untuk penggunaan semula kod dan kefungsian khusus.
Kritik Menamakan Lambdas
Walaupun amalan ini kelihatan mudah, ia biasanya dianggap bukan Pythonik dan bertentangan dengan saranan PEP8. Seperti yang dinyatakan oleh PEP8:
"Sentiasa gunakan pernyataan def dan bukannya pernyataan tugasan yang mengikat ungkapan lambda terus kepada pengecam."
Rasional di sebalik pengesyoran ini ialah mentakrifkan lambda sebagai fungsi:
Contoh
Pertimbangkan contoh fungsi yang disediakan dalam soalan:
def fcn_operating_on_arrays(array0, array1): indexer = lambda a0, a1, idx: a0[idx] + a1[idx] # ... indexed = indexer(array0, array1, indices) # ...
Daripada menggunakan lambda bernama, ia adalah lebih Pythonic untuk mentakrifkan fungsi yang berasingan, dinamakan secara eksplisit:
def index_array(a0, a1, idx): return a0[idx] + a1[idx] def fcn_operating_on_arrays(array0, array1): # ... indexed = index_array(array0, array1, indices) # ...
Kesimpulan
Walaupun memberikan nama kepada lambdas mungkin kelihatan berguna dalam situasi tertentu, ia tidak disyorkan . Sebaliknya, ikuti prinsip Pythonic menggunakan definisi fungsi eksplisit untuk mengekalkan kejelasan, kebolehbacaan dan pematuhan kepada amalan terbaik.
Atas ialah kandungan terperinci Untuk Menamakan atau Tidak Menamakan: Bilakah Anda Harus Berikan Nama kepada Lambdas dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!