Rumah >pembangunan bahagian belakang >Tutorial Python >Mengakses Pembolehubah Bukan Setempat dalam Python 2.x: Bagaimana Mengatasi Had?

Mengakses Pembolehubah Bukan Setempat dalam Python 2.x: Bagaimana Mengatasi Had?

Patricia Arquette
Patricia Arquetteasal
2024-10-22 08:37:30726semak imbas

Accessing Nonlocal Variables in Python 2.x: How to Work Around the Limitations?

Mengakses Pembolehubah Bukan Setempat dalam Penutupan dalam Python 2.x

Python 2.x tidak mempunyai kata kunci bukan tempatan, yang menimbulkan persoalan tentang mengakses pembolehubah bukan tempatan dalam penutupan. Fungsi dalaman sememangnya boleh membaca pembolehubah bukan tempatan, tetapi mengikat semula pembolehubah itu tidak dibenarkan.

Penyelesaian untuk Mengakses Pembolehubah Bukan Setempat

Walaupun pengehadan ini, anda boleh menggunakan penyelesaian:

  • Pembolehubah Bukan Setempat Boleh Berubah: Pembolehubah bukan Setempat boleh merujuk objek boleh ubah. Fungsi dalaman boleh mengubah suai objek ini, mengubah nilai pembolehubah bukan setempat secara tidak langsung.
  • Storan Kamus: Cipta kamus untuk menyimpan elemen data bukan setempat. Fungsi dalaman boleh mengakses dan mengubah suai elemen ini mengikut keperluan.

Contoh Menggunakan Kamus

Pertimbangkan coretan kod berikut, berdasarkan contoh Wikipedia:

<code class="python">def outer():
    data = {'y': 0}

    def inner():
        data['y'] += 1
        return data['y']

    return inner

f = outer()
print(f(), f(), f())  # prints 1 2 3</code>

Dalam contoh ini, data kamus digunakan untuk menyimpan pembolehubah bukan tempatan y. Fungsi dalaman boleh menambah nilai y dan mengembalikan nilai yang dikemas kini tanpa melanggar sekatan untuk mengikat semula pembolehubah bukan tempatan.

Atas ialah kandungan terperinci Mengakses Pembolehubah Bukan Setempat dalam Python 2.x: Bagaimana Mengatasi Had?. 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