Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapakah `c = 1` Menyebabkan `UnboundLocalError` dalam Fungsi Python?

Mengapakah `c = 1` Menyebabkan `UnboundLocalError` dalam Fungsi Python?

Mary-Kate Olsen
Lepaskan: 2024-12-23 01:11:14
asal
246 orang telah melayarinya

Why Does `c  = 1` Cause an `UnboundLocalError` in Python Functions?

UnboundLocalError: Skop Pembolehubah dalam Fungsi dengan Tugasan

UnboundLocalError timbul apabila pembolehubah digunakan dalam fungsi tanpa ditakrifkan atau diimport dengan betul. Memahami konsep skop adalah penting untuk menyelesaikan isu ini.

Python membezakan antara pembolehubah tempatan dan global dalam fungsi. Apabila pembolehubah diberikan nilai di dalam fungsi, ia menjadi pembolehubah tempatan. Pembolehubah tempatan ini diutamakan daripada mana-mana pembolehubah global dengan nama yang sama.

Dalam contoh yang diberikan, apabila c = 1 dilaksanakan, pembolehubah tempatan c dicipta. Pembolehubah tempatan ini mengatasi pembolehubah global c dengan nilai 3. Walau bagaimanapun, pernyataan print(c) cuba mengakses global c, yang tidak ditentukan pada ketika itu, menyebabkan UnboundLocalError.

Untuk membetulkan isu ini , Python menyediakan dua pilihan:

  • global: Mengisytiharkan pembolehubah sebagai global dalam fungsi memastikan bahawa ia merujuk pembolehubah global dengan nama yang sama. Dengan meletakkan global c sebagai baris pertama fungsi test(), pernyataan print(c) akan merujuk kepada global c, menghapuskan ralat.
  • nonlocal (Python 3): Gunakan c bukan tempatan untuk mengakses pembolehubah c yang ditakrifkan dalam skop fungsi penutup yang terdekat. Pilihan ini amat berguna untuk penutupan.

Atas ialah kandungan terperinci Mengapakah `c = 1` Menyebabkan `UnboundLocalError` dalam Fungsi 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