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
Mary-Kate Olsenasal
2024-12-23 01:11:14267semak imbas

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!

Kenyataan:
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