Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Python Membuang `UnboundLocalError` Apabila Mengubah Pembolehubah Global Di Dalam Fungsi?

Mengapa Python Membuang `UnboundLocalError` Apabila Mengubah Pembolehubah Global Di Dalam Fungsi?

Linda Hamilton
Lepaskan: 2024-12-24 16:47:13
asal
847 orang telah melayarinya

Why Does Python Throw an `UnboundLocalError` When Modifying a Global Variable Inside a Function?

UnboundLocalError: Tugasan Pembolehubah Diutamakan berbanding Pengisytiharan Global

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

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!

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