UnboundLocalError dalam Penutupan: Analisis
UnboundLocalError berlaku apabila pembolehubah yang digunakan dalam kod fungsi tidak ditakrifkan secara setempat, global atau sebagai sebahagian daripada blok bukan tempatan. Pertimbangkan kod berikut:
counter = 0 def increment(): counter += 1 increment()
Menjalankan kod ini akan menghasilkan UnboundLocalError. Mengapa ini berlaku?
Memahami Skop Pembolehubah Python
Python secara dinamik menentukan skop pembolehubah berdasarkan tugasan. Jika pembolehubah ditetapkan dalam fungsi, ia dianggap setempat untuk fungsi itu. Dalam contoh kami, pembilang tugasan = 1 dalam increment() secara tersirat mentakrifkan pembilang sebagai setempat untuk fungsi itu.
Pembolehubah Setempat lwn. Global
Python membezakan antara tempatan dan pembolehubah global. Pembolehubah global diisytiharkan pada peringkat modul dan boleh diakses sepanjang program. Pembolehubah tempatan, sebaliknya, dicipta dalam fungsi dan hanya wujud dalam fungsi tersebut.
Dalam kes kami, kaunter tidak ditakrifkan secara global. Ralat berlaku kerana Python cuba membaca nilai pembilang daripada skop tempatan kenaikan() sebelum ia ditetapkan, maka UnboundLocalError.
Menyelesaikan Ralat
Untuk menyelesaikan ralat ini, anda boleh melakukan salah satu daripada berikut:
Atas ialah kandungan terperinci Mengapakah `counter = 1` Di Dalam Fungsi Menyebabkan `UnboundLocalError` dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!