Rumah >pembangunan bahagian belakang >Tutorial Python >Python Menggoda Untuk Gelung – Dan Itulah Sebabnya Kami Sukakannya

Python Menggoda Untuk Gelung – Dan Itulah Sebabnya Kami Sukakannya

DDD
DDDasal
2025-01-12 08:07:41630semak imbas

Python Sucks at For Loops – And That’s Exactly Why We Love It

Python, kucing yang elegan dalam dunia bahasa pengaturcaraan: bebas, canggih dan nampaknya tidak memerlukan anda sehingga ia benar-benar memerlukannya. Kualiti ini paling jelas ditunjukkan dalam gelungnya, yang boleh membuatkan anda berasa seperti seorang genius dan bodoh dalam sekelip mata.

Bukannya Python for loop adalah buruk, cuma ia terlalu pandai berpura-pura tahu lebih baik daripada anda.

  1. Zen of Python: "Kurangkan usaha, bodoh"

Untuk gelung dalam kebanyakan bahasa pengaturcaraan adalah intuitif. Nak kira sampai 10? Tiada masalah, berikan anda sekumpulan kod boilerplate untuk membuatkan anda berasa bijak.

Cara menulis dalam bahasa C:

<code class="language-c">for (int i = 0; i < 10; i++) {
    printf("%d\n", i);
}</code>

Mudah, boleh diramal dan menghormati IQ anda.

Dan Python berkata:

"Mengapa perlu bersusah payah mentakrifkan i, menentukan julat atau melakukan aritmetik asas? Saya akan membentangkan semuanya di hadapan anda supaya anda boleh mengalami bagaimana rasanya menjadi pengaturcara palsu."

Versi Python:

<code class="language-python">for i in range(10):
    print(i)</code>

Itu sahaja. Tiada pengisytiharan, tiada pendakap, hanya "vibe". Python’s for loop sangat mudah sehingga terasa serba salah.


  1. Python lebih daripada itu: ia mahu anda berbuat kurang

Andaikan anda mempunyai senarai buah-buahan dan ingin mencetaknya.

Versi bahasa C (sekali lagi, sangat menghormati):

<code class="language-c">char* fruits[] = {"apple", "banana", "cherry"};
for (int i = 0; i < 3; i++) {
    printf("%s\n", fruits[i]);
}</code>

Versi Python:

<code class="language-python">fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)</code>

Adakah anda perasan apa-apa? Python tidak peduli untuk memberi anda indeks. Ia hanya melemparkan keseluruhan elemen kepada anda seperti Frisbee dan berkata, "Sini, uruskannya."

Adakah anda mahu menunjukkan kepintaran anda dengan mengindeks senarai secara manual? Alangkah malunya. Python sudah mengetahui apa yang anda mahukan dan menyuapkannya kepada anda secara langsung.


    Pemahaman senarai: penamat untuk gelung

Pemahaman senarai

Python ialah kubur untuk gelung.

Ingin membuat senarai baharu di mana setiap nombor digandakan? Dalam mana-mana bahasa lain ini memerlukan 3 hingga 4 baris kod. Python dengan mudah menunjukkan kemahiran pengekodan satu barisnya:

<code class="language-python">doubled = [x * 2 for x in range(10)]</code>
Bukan sahaja ini

cekap, ia juga membuatkan anda berasa seperti anda sedang menulis kod dalam beberapa bahasa pengaturcaraan rahsia yang manusia biasa tidak akan faham. Tetapi kosnya ialah: Gelung for anda kini kelihatan seperti teka-teki silang kata samar.

Contoh:

<code class="language-python">results = [f"Employee-{i}" for i in range(10) if i % 2 == 0]</code>
Tahniah! Anda baru sahaja menulis baris kod dan dua minggu kemudian anda tidak tahu apa maksudnya.


    "Mari kita musnahkan barangan untuk berseronok"

Python for loop juga suka mengkhianati anda dengan cara yang halus. Ini adalah kesilapan klasik:

Timpa pembolehubah yang tidak dijangka

<code class="language-c">for (int i = 0; i < 10; i++) {
    printf("%d\n", i);
}</code>

Tunggu, apa? Bukankah kita menggantikan segala-galanya dengan "nanas"? Tidak! Python sedang mencebik di sudut kerana fruit hanyalah pembolehubah sementara. Senarai sebenar tidak diubah suai.

Sementara itu, pembangun JavaScript ketawa sendiri kerana mereka tahu mereka boleh menjatuhkan keseluruhan sistem pengeluaran dengan isu skop berubah-ubah.


  1. hitungkan: MVP yang kami tidak layak

Kadangkala anda memerlukan kedua-dua indeks dan nilai. Python boleh membuatkan anda menggunakan i yang membosankan seperti bahasa lain. Tetapi ia memberi anda enumerate(), yang kedengarannya lebih seperti istilah korporat daripada fungsi pengaturcaraan.

<code class="language-python">for i in range(10):
    print(i)</code>

"hitungkan". Betul ke? Python, ini bukan mesyuarat lembaga. Rileks sahaja.


  1. Gelung Python tiba-tiba... berhenti berfungsi

Ingin mengubah suai senarai semasa menggolongkannya? Python akan memandang anda dengan kosong dan berkata:

"Anda terlalu berfikir."

Contoh:

<code class="language-c">char* fruits[] = {"apple", "banana", "cherry"};
for (int i = 0; i < 3; i++) {
    printf("%s\n", fruits[i]);
}</code>

Kini terdapat unsur yang hilang dalam senarai kerana Python tersesat sepanjang perjalanan. Jika Python adalah seorang pelayan, ini adalah sama dengan membersihkan meja anda sebelum anda menghabiskan makanan anda.


  1. Gelung tak terhingga yang bukan gelung tak terhingga

Cuba tulis gelung tak terhingga klasik dalam Python. Anda tahu, untuk keseronokan. Berikut ialah cara menulisnya dalam bahasa C:

<code class="language-python">fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)</code>

Berikut ialah versi Python:

<code class="language-python">doubled = [x * 2 for x in range(10)]</code>

Memang berkesan, tetapi rasa pelik. Python tidak cuba meniru gelung tak terhingga klasik. Ia hanya...kebenaran yang tidak terhingga.


Kesimpulan: Python untuk gelung tidak buruk - Hanya kita yang tidak boleh melakukannya

Sebenarnya, Python untuk gelung tidak begitu teruk. Cuma kita sendiri yang manja. Gelung Python adalah sangat intuitif, ringkas dan berkuasa sehingga kita melupakan kesakitan menjejaki indeks secara manual atau menangani segfault.

Jadi, pada kali seterusnya anda mengadu tentang Python untuk gelung, ingat ini: Python bukanlah sesuatu yang mengerikan. Baru penat pegang tangan.

Atas ialah kandungan terperinci Python Menggoda Untuk Gelung – Dan Itulah Sebabnya Kami Sukakannya. 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