Rumah >pembangunan bahagian belakang >Tutorial Python >Untuk Menamakan atau Tidak Menamakan: Bilakah Anda Harus Berikan Nama kepada Lambdas dalam Python?

Untuk Menamakan atau Tidak Menamakan: Bilakah Anda Harus Berikan Nama kepada Lambdas dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-11-27 14:43:11746semak imbas

To Name or Not to Name: When Should You Assign Names to Lambdas in Python?

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:

  • Menyediakan nama yang jelas dan jelas: Tidak seperti lambdas yang dinamakan, pernyataan def secara eksplisit mengaitkan fungsi dengan pengecam yang bermakna.
  • Membantu dengan surih balik dan perwakilan rentetan: Fungsi bernama memaparkan nama khusus mereka dalam mesej ralat dan perwakilan rentetan, memberikan kebolehbacaan yang lebih baik .
  • Menghilangkan manfaat utama lambdas: Keupayaan untuk membenamkan fungsi tanpa nama dalam ungkapan yang lebih besar adalah berlebihan apabila anda menetapkan pembolehubah kepada lambda.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn