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!