Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Kod Python Saya Membuang 'UnboundLocalError' Apabila Mengakses Pembolehubah Global Dalam Fungsi?

Mengapa Kod Python Saya Membuang 'UnboundLocalError' Apabila Mengakses Pembolehubah Global Dalam Fungsi?

Mary-Kate Olsen
Lepaskan: 2024-12-23 03:35:14
asal
799 orang telah melayarinya

Why Does My Python Code Throw an

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan