Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Python Membuang UnboundLocalError?
Dalam Python, pengikatan pembolehubah menentukan skop dan jangka hayat pembolehubah. Apabila nama tidak diberikan nilai, ia dianggap tidak terikat. Ini boleh membawa kepada pengecualian UnboundLocalError.
Memahami Pembolehubah Setempat Tidak Terikat
Tidak seperti bahasa dengan pengisytiharan eksplisit, Python membenarkan penetapan pembolehubah di mana-mana dalam blok. Walau bagaimanapun, jika nama dalam fungsi digunakan sebelum ia ditetapkan, UnboundLocalError dibangkitkan. Ini berlaku kerana pengkompil tidak dapat menentukan nilai pembolehubah kerana ia belum terikat lagi.
Contoh: Kod Yang Menyebabkan UnboundLocalError
Pertimbangkan kod berikut:
def foo(): if False: spam = 'eggs' print(spam) foo()
Kod ini menghasilkan UnboundLocalError kerana pembolehubah spam sedang digunakan dalam penyata cetakan tanpa diberikan terlebih dahulu. Walaupun pernyataan if menyemak syarat, ia tidak melaksanakan tugasan, meninggalkan spam tidak terikat.
Operasi Mengikat dalam Python
Pembolehubah menjadi terikat melalui pelbagai operasi:
Apabila nama terikat dalam skop, seperti fungsi, ia menjadi pembolehubah setempat. Walau bagaimanapun, menggunakan pernyataan global (atau bukan tempatan dalam Python 3) secara eksplisit mengisytiharkan nama sebagai global, membenarkan ia dirujuk dan diubah suai dari luar skop.
Mencegah Ralat Tempatan Tidak Terikat
Untuk mengelakkan UnboundLocalError, pastikan pembolehubah diikat dengan betul sebelum ia digunakan. Ini boleh dilakukan dengan:
Rujukan:
Atas ialah kandungan terperinci Mengapa Python Membuang UnboundLocalError?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!