Rumah > pembangunan bahagian belakang > Tutorial Python > Bila dan Bagaimana UnboundLocalError Berlaku dalam Python?

Bila dan Bagaimana UnboundLocalError Berlaku dalam Python?

Barbara Streisand
Lepaskan: 2025-01-03 00:24:38
asal
914 orang telah melayarinya

When and How Does an UnboundLocalError Occur in Python?

Bila dan Bagaimanakah Nama Boleh "Tidak Terikat" dalam Python?

Dokumentasi Python menerangkan bahawa UnboundLocalError berlaku apabila pembolehubah tempatan diakses sebelum ia ditetapkan nilai. Walau bagaimanapun, ia menyebut bahawa Python tidak menguatkuasakan pengisytiharan. Ini menimbulkan persoalan: bagaimana pembolehubah boleh "tidak terikat" jika ia belum diisytiharkan?

UnboundLocalError dan Name Binding

Dalam Python, pembolehubah mengikat berlaku melalui tugasan, gelung, fungsi, import , pengendalian pengecualian dan pengurusan konteks. Pengikatan menentukan skop pembolehubah. Nama dianggap tempatan jika ia terikat dalam fungsi atau kaedah, melainkan ditandakan secara eksplisit sebagai global atau bukan tempatan menggunakan pernyataan yang sesuai.

Nama Tidak Terikat lwn. Nama Tidak Ditakrifkan

Nama tidak terikat merujuk kepada pembolehubah yang telah dirujuk sebelum diikat. Ini berbeza daripada nama yang tidak ditentukan, yang belum lagi dibuat atau diberikan. Apabila nama tidak terikat ditemui, Python menimbulkan UnboundLocalError.

Contoh UnboundLocalError

Pertimbangkan kod berikut:

def foo():
    if False:
        spam = 'eggs'
    print(spam)
Salin selepas log masuk

Melaksanakan foo() akan menghasilkan UnboundLocalError . Pembolehubah spam dirujuk dalam cetakan(spam) tanpa pernah diberikan nilai. Walaupun ia ditakrifkan dalam pernyataan if, pernyataan itu tidak dilaksanakan, jadi spam kekal tidak terikat.

Mencegah UnboundLocalError

Untuk mengelakkan UnboundLocalError, pastikan pembolehubah tempatan diberikan nilai sebelum merujuknya . Sebagai alternatif, isytiharkan pembolehubah global secara eksplisit menggunakan pernyataan global atau pembolehubah bukan tempatan menggunakan pernyataan bukan tempatan.

Kesimpulan

Ringkasnya, nama menjadi tidak terikat apabila ia dirujuk sebelum diikat dalam skop semasa. Ini berlaku kerana Python tidak memerlukan pengisytiharan berubah-ubah, membenarkan operasi mengikat berlaku di mana-mana dalam blok kod. Menggunakan tugasan dan pengurusan skop yang betul boleh membantu mengelakkan pengecualian UnboundLocalError.

Atas ialah kandungan terperinci Bila dan Bagaimana UnboundLocalError Berlaku dalam Python?. 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