Menghapuskan Pembolehubah Iterator dalam For Gelung
Ia mungkin kelihatan seperti tugas yang mudah untuk mengulang dalam julat, melaksanakan set arahan yang sama bilangan kali tertentu. Walau bagaimanapun, bagaimana jika pembolehubah lelaran (biasanya dilambangkan sebagai 'i') tidak mempunyai tujuan yang boleh dilihat? Adakah mungkin untuk mengetepikan penggunaannya?
Tiada Alternatif Langsung
Pada pandangan pertama, jawapannya nampaknya negatif. Sintaks Python memberi mandat bahawa setiap gelung for merangkumi pembolehubah lelaran untuk melintasi koleksi atau jujukan yang diulang.
Meniru Tingkah Laku Lelaran
Walaupun tiada lelaran yang jelas , satu bentuk asas tingkah laku "seperti iterator" boleh dicapai melalui susunan yang lebih tinggi fungsi:
def loop(f, n): for i in xrange(n): f() loop(lambda: <insert expression here>, 5)
Dalam contoh ini, 'n' mewakili bilangan lelaran yang diingini, dan 'f' ialah fungsi yang melaksanakan tindakan yang dimaksudkan dalam setiap lelaran. Malangnya, pendekatan ini memperkenalkan kekacauan dan keterlaluan tambahan.
Ubah Underscore
Python menawarkan pembolehubah '_', yang berfungsi sebagai pemegang tempat untuk sebarang nilai yang terakhir ditemui . Walaupun ini mungkin menawarkan alternatif yang menarik, adalah penting untuk ambil perhatian bahawa '_' menganggap nilai ungkapan terakhir ditemui:
>>> 1+2 3 >>> _ 3
Oleh itu, penggunaannya dalam gelung for boleh membawa kepada hasil yang tidak dijangka dan jurubahasa yang berpotensi gangguan:
>>> for _ in xrange(10): pass ... >>> _ 9 >>> 1+2 3 >>> _ 9
Kesimpulan
Walaupun Python tidak menyokong gelung tanpa pembolehubah lelaran secara asli, pembolehubah garis bawah menawarkan penyelesaian terhad dengan kaveat yang berpotensi. Walau bagaimanapun, secara amnya disyorkan untuk menerima penggunaan pembolehubah lelaran sebagai bahagian penting bagi sintaks gelung.
Atas ialah kandungan terperinci Bolehkah Anda Menghapuskan Pembolehubah Iterator dalam Python Untuk Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!