Apabila menghadapi UnboundLocalError dalam Python, adalah penting untuk memahami keutamaan tugasan pembolehubah berbanding pengisytiharan global. Mari kita teliti butiran menggunakan kod yang disediakan:
a, b, c = (1, 2, 3) def test(): print(a) print(b) print(c) c += 1 test()
Sebelum meneroka ralat, mari kita atasi cetakan 'a' dan 'b' yang berjaya. Untuk pembolehubah ini, tiada tugasan dalam fungsi 'test()', jadi Python menganggapnya sebagai pembolehubah global dan mendapatkan semula nilainya dari skop luar.
Walau bagaimanapun, apabila memberikan nilai kepada 'c' dalam fungsi ('c = 1'), Python mencipta pembolehubah tempatan bernama 'c'. Pembolehubah tempatan ini membayangi 'c' global, dan sebarang rujukan seterusnya kepada 'c' dalam fungsi akan merujuk kepada versi tempatan. Oleh itu, apabila baris 'print(c)' dilaksanakan, ia cuba mencetak pembolehubah tempatan yang tidak ditetapkan, menghasilkan 'UnboundLocalError'.
Untuk menangani isu ini, seseorang boleh mengisytiharkan penggunaan global secara eksplisit. 'c' pembolehubah dalam fungsi 'test()' dengan menambah 'global c' sebagai baris pertama. Sebagai alternatif, dalam Python 3, 'nonlocal c' boleh digunakan untuk mengakses skop fungsi lampiran terdekat yang mengandungi pembolehubah bernama 'c'.
Atas ialah kandungan terperinci Mengapa Python Membuang `UnboundLocalError` Apabila Mengubah Pembolehubah Global Di Dalam Fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!