Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Kod Python Saya Membuang 'UnboundLocalError' Apabila Mengakses Pembolehubah Global Dalam Fungsi?
Ralat Tempatan Tidak Terikat: Pembolehubah Tempatan 'c' Membayangi Skop Global
Dalam Python, memahami peraturan tugasan untuk pembolehubah dalam fungsi adalah penting untuk mengelakkan kesilapan yang mungkin berlaku. Apabila menghadapi "UnboundLocalError", adalah penting untuk menyiasat sama ada pembolehubah yang ditetapkan dalam fungsi cuba membayangi pembolehubah global.
Pertimbangkan kod berikut:
a, b, c = (1, 2, 3) def test(): print(a) print(b) print(c) c += 1
Apabila melaksanakan kod ini , anda akan menghadapi ralat yang berpunca daripada baris "print(c)." Mesej ralat lazimnya menunjukkan bahawa tiada pembolehubah "c" diperuntukkan dalam skop setempat bagi fungsi test().
Untuk menyelesaikan ralat ini, anda perlu memahami bahawa Python melayan pembolehubah dalam fungsi secara berbeza berdasarkan tempat mereka ditugaskan. Jika anda cuba memberikan nilai kepada pembolehubah dalam fungsi, ia menjadi pembolehubah setempat. Walau bagaimanapun, dalam kod ini, anda berhasrat untuk "c" kekal global.
Untuk mengisytiharkan bahawa pembolehubah "c" dalam fungsi test() merujuk kepada pembolehubah global "c," anda mesti menggunakan secara eksplisit " global" pada permulaan fungsi:
def test(): global c print(a) print(b) print(c) c += 1
Dengan menambahkan "global c," Python mengiktiraf bahawa anda berhasrat untuk bekerja dengan pembolehubah "c" global dan bukan tempatan. Ini membolehkan anda mencetak dan mengubah suai pembolehubah "c" global seperti yang dijangkakan.
Sebagai ciri yang lebih baharu yang diperkenalkan dalam Python 3, anda boleh menggunakan "c bukan tempatan" dan bukannya "c global" untuk merujuk kepada lampiran terdekat skop fungsi yang mempunyai pembolehubah "c". Walau bagaimanapun, perlu diingat bahawa penggunaan "bukan tempatan" biasanya kurang biasa dalam pengekodan Python setiap hari.
Atas ialah kandungan terperinci Mengapa Kod Python Saya Membuang 'UnboundLocalError' Apabila Mengakses Pembolehubah Global Dalam Fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!