Mengapa Panggilan Fungsi Tidak Mengemas kini Pembolehubah Global?

Barbara Streisand
Lepaskan: 2024-10-19 12:00:29
asal
581 orang telah melayarinya

Why Does Function Call Not Update Global Variable?

Panggilan Fungsi Tidak Mengemas kini Pembolehubah Global

Soalan ini meneroka cabaran pengaturcaraan di mana pembolehubah global, yang pada mulanya ditetapkan sebagai Palsu, adalah' t sedang dikemas kini apabila dirujuk dalam fungsi. Walaupun fungsi mengubah nilai pembolehubah global, gelung program utama terus dilaksanakan, membawa kepada gelung tak terhingga. Memahami isu ini memerlukan mendalami konsep ruang nama dan skop pembolehubah.

Ruang Nama dan Skop Pembolehubah

Dalam pengaturcaraan, setiap fungsi dan modul mencipta ruang nama sendiri. Ruang nama ialah koleksi nama (pembolehubah, fungsi, dll.) yang diketahui dan boleh diakses dalam skop tersebut. Apabila pembolehubah diberikan nilai di dalam fungsi, pembolehubah baharu dicipta dalam ruang nama fungsi, walaupun pembolehubah global dengan nama yang sama wujud.

Menggunakan Pembolehubah global

Dalam kes ini, apabila pembolehubah global yang dipanggil "selesai" dirujuk dalam fungsi, pembolehubah tempatan baharu dengan nama yang sama dicipta dalam ruang nama fungsi. "selesai" tempatan ini berbeza daripada "selesai" global. Menukar "selesai" setempat tidak mempunyai kesan ke atas pembolehubah global.

Penyelesaian

Untuk mengatasinya, kata kunci global mesti digunakan untuk merujuk pembolehubah global secara eksplisit dalam fungsi. Dengan menggunakan global done, fungsi ini memberitahu jurubahasa untuk mengakses pembolehubah "selesai" global dan bukannya mencipta tempatan baharu.

Kod Diubah Suai

Untuk menyelesaikan isu , fungsi boleh diubah suai seperti berikut:

<code class="python">def function():
    global done
    for loop:
        code
        if not comply:
            done = True</code>
Salin selepas log masuk

Penjelasan

Menggunakan global done mewujudkan hubungan antara pembolehubah yang digunakan dalam fungsi dan yang global. Apabila fungsi mengubah suai nilai selesai, ia mengemas kini pembolehubah global yang sama yang dirujuk pada mulanya. Ini memastikan bahawa gelung sementara program utama akan ditamatkan seperti yang dimaksudkan apabila fungsi ditetapkan kepada Benar.

Atas ialah kandungan terperinci Mengapa Panggilan Fungsi Tidak Mengemas kini Pembolehubah Global?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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