Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Pembolehubah Global tidak Mengemas kini Dalam Fungsi, Menghasilkan Gelung Infinite?

Mengapa Pembolehubah Global tidak Mengemas kini Dalam Fungsi, Menghasilkan Gelung Infinite?

Linda Hamilton
Linda Hamiltonasal
2024-10-19 12:39:29392semak imbas

Why is a Global Variable not Updating Within a Function, Resulting in an Infinite Loop?

Perbezaan dalam Skop Pembolehubah antara Fungsi dan Gelung

Soalan ini menangani masalah dengan pembolehubah global tidak dikemas kini dalam fungsi, yang membawa kepada gelung tak terhingga. Coretan kod yang diberikan adalah seperti berikut:

<code class="python">done = False

def function():
    for loop:
        code
        if not comply:
            done = True  #let's say that the code enters this if-statement

while done == False:
    function()</code>

Penjelasan yang diberikan menunjukkan bahawa sebab isu ini terletak pada skop pembolehubah dalam fungsi lawan gelung. Dalam Python, fungsi mencipta ruang nama mereka sendiri, berasingan daripada ruang nama global. Oleh itu, memberikan nilai untuk dilakukan dalam fungsi tidak mengubah suai pembolehubah global yang dilakukan.

Untuk menyelesaikan isu ini, jawapan mengesyorkan menggunakan kata kunci global dalam fungsi untuk mengakses pembolehubah global secara eksplisit:

<code class="python">def function():
    global done  # Access the global variable
    for loop:
        code
        if not comply:
            done = True</code>

Dengan menggunakan global, fungsi ini dapat mengubah suai pembolehubah global yang dilakukan, menamatkan gelung tak terhingga dengan berkesan apabila syarat if dipenuhi.

Jawapan selanjutnya mencadangkan teknik nyahpepijat seperti menggunakan penyahpepijat atau mencetak kenyataan untuk mengesan aliran pelaksanaan dan mengenal pasti di mana isu itu timbul.

Atas ialah kandungan terperinci Mengapa Pembolehubah Global tidak Mengemas kini Dalam Fungsi, Menghasilkan Gelung Infinite?. 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