Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Python Meningkatkan UnboundLocalError?

Mengapa Python Meningkatkan UnboundLocalError?

Mary-Kate Olsen
Lepaskan: 2024-12-24 13:08:16
asal
679 orang telah melayarinya

Why Does Python Raise an UnboundLocalError?

Nama Tidak Terikat dalam Python: Memahami UnboundLocalError

Apabila menemui nama dalam Python, jurubahasa menyemak status pengikatannya dalam skop semasa. Jika nama tidak terikat pada nilai, ralat akan dibangkitkan. Memahami cara pengikatan nama berfungsi adalah penting untuk mengelakkan ralat sedemikian.

Sifat Nama Tempatan Tidak Terikat

Ralat Tidak Terikat timbul apabila pembolehubah setempat dirujuk sebelum ia ditetapkan nilai atau sebelum sebarang operasi mengikat (cth., penetapan, parameter fungsi) telah berlaku. Keadaan ini boleh berlaku apabila pernyataan bersyarat menghalang operasi pengikatan daripada dilaksanakan.

Pertimbangkan coretan kod berikut:

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

Dalam contoh ini, pembolehubah spam tidak terikat dalam if blok pernyataan kerana keadaan dinilai kepada False. Apabila jurubahasa menemui pernyataan cetakan, ia menimbulkan UnboundLocalError kerana ia tidak dapat mengesan nilai terikat untuk spam.

Operasi Mengikat

Dalam Python, operasi mengikat mewujudkan skop daripada sebuah nama. Operasi ini termasuk:

  • Tugasan
  • Parameter fungsi
  • untuk nama gelung
  • Pengendali pengecualian
  • Nama pengurus konteks

Global dan Tempatan Pengikatan

Nama tempatan terikat dalam skop tertentu, biasanya fungsi atau blok bersarang. Nama global, sebaliknya, terikat di luar mana-mana skop fungsi dan boleh diakses dari mana-mana titik dalam program. Untuk mengisytiharkan pembolehubah sebagai global secara eksplisit, kata kunci global mesti digunakan dalam skop fungsi.

Sebagai contoh, pertimbangkan coretan kod berikut:

foo = None
def bar():
    foo = 'spam'
    print(foo)
Salin selepas log masuk

Kod ini menimbulkan UnboundLocalError kerana foo sedang terikat dalam skop fungsi bar. Untuk membetulkannya, foo mesti diisytiharkan sebagai pembolehubah global dalam fungsi:

foo = None
def bar():
    global foo
    foo = 'spam'
    print(foo)
Salin selepas log masuk

Ringkasan

UnboundLocalErrors berlaku apabila pembolehubah tempatan dirujuk sebelum diikat kepada suatu nilai. Memahami operasi mengikat dan konsep nama global dan tempatan adalah penting untuk mengelakkan ralat ini. Dengan mengurus pengikatan nama dengan betul, pengaturcara Python boleh memastikan kod mereka dilaksanakan tanpa ralat yang berkaitan dengan nama tidak terikat.

Atas ialah kandungan terperinci Mengapa Python Meningkatkan UnboundLocalError?. 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