Rumah > pembangunan bahagian belakang > Tutorial Python > Adakah Menggunakan Pemahaman Senarai untuk Kesan Sampingan dalam Python Dianggap sebagai Amalan Buruk?

Adakah Menggunakan Pemahaman Senarai untuk Kesan Sampingan dalam Python Dianggap sebagai Amalan Buruk?

Susan Sarandon
Lepaskan: 2024-12-27 16:39:09
asal
380 orang telah melayarinya

Is Using List Comprehensions for Side Effects in Python Considered Bad Practice?

Menggunakan Pemahaman Senarai untuk Kesan Sampingan: Amalan Bukan Phytonik

Pemahaman senarai Python ialah alat yang berkuasa untuk mencipta senarai baharu berdasarkan iterable sedia ada . Walaupun mereka menawarkan sintaks ringkas dan ekspresif, menggunakan pemahaman senarai semata-mata untuk kesan sampingannya dianggap anti-Pythonic.

Masalahnya

Pertimbangkan fungsi yang melakukan kesan sampingan seperti sebagai mencetak ke skrin, mengemas kini GUI atau menulis ke fail. Ia mengembalikan nilai, tetapi nilai itu biasanya tidak menarik.

def fun_with_side_effects(x):
    ...side effects...
    return y
Salin selepas log masuk

Seseorang mungkin tergoda untuk menggunakan pemahaman senarai untuk memanggil fungsi ini untuk kesan sampingannya, seperti berikut:

[fun_with_side_effects(x) for x in y if (...conditions...)]
Salin selepas log masuk

Perhatikan bahawa senarai yang terhasil tidak diberikan kepada pembolehubah.

Anti-Pythonic Alam Semula Jadi

Menggunakan pemahaman senarai dengan cara ini amat tidak digalakkan atas beberapa sebab:

  • Ketidakcekapan: Membuat senarai perantaraan boleh menjadi mahal, terutamanya jika yang boleh diulang adalah besar. Senarai itu dibuat tetapi segera dibuang, mengakibatkan sumber terbuang.
  • Unidiomatik: Pembangun Python berpengalaman lebih suka menggunakan gelung eksplisit untuk operasi kesan sampingan. Pemahaman senarai biasanya digunakan untuk mencipta nilai baharu.
  • Kekeliruan: Dengan membuang senarai, niat kod boleh menjadi tidak jelas kepada pengaturcara lain. Adalah lebih baik untuk membuat kesan sampingan secara eksplisit.

Pendekatan Pilihan

Pendekatan pilihan ialah menggunakan gelung for untuk mengulang ke atas yang boleh diulang dan memanggil fungsi kesan sampingan hanya apabila perlu:

for x in y:
    if (...conditions...):
        fun_with_side_effects(x)
Salin selepas log masuk

Pendekatan ini lebih cekap, idiomatik dan kurang mengelirukan. Ia adalah petunjuk yang jelas bahawa fungsi dipanggil terutamanya untuk kesan sampingannya.

Atas ialah kandungan terperinci Adakah Menggunakan Pemahaman Senarai untuk Kesan Sampingan dalam Python Dianggap sebagai Amalan Buruk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan