Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Penutupan Mendayakan Pemeliharaan dan Enkapsulasi Negeri dalam Python?

Bagaimanakah Penutupan Mendayakan Pemeliharaan dan Enkapsulasi Negeri dalam Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 23:32:31227semak imbas

How Do Closures Enable State Preservation and Encapsulation in Python?

Penutupan dalam Python

Penutupan ialah konsep yang elegan dan berkuasa dalam Python, membenarkan fungsi mengekalkan akses kepada pembolehubah daripada skop yang disertakan. Ciri ini memperkenalkan keupayaan untuk mencipta fungsi dengan keadaan terpelihara, membawa kepada kod yang lebih serba boleh dan cekap.

Pada terasnya, penutupan ialah fungsi bersarang yang boleh mengakses pembolehubah yang ditakrifkan dalam skop lampirannya, walaupun selepas lampiran fungsi telah selesai dilaksanakan. Ini dicapai dengan mencipta "objek penutupan" yang menangkap pembolehubah fungsi yang disertakan.

Mengapa Gunakan Penutupan?

Penutupan memberikan beberapa faedah:

  • Kekalkan Keadaan: Penutupan membolehkan kami menyimpan keadaan dalam fungsi, membenarkan nilai berterusan walaupun selepas fungsi penutup keluar.
  • Encapsulation: Dengan merangkum data dalam penutupan, kami meningkatkan keselamatan dan organisasi kod.
  • Pengendalian Acara: Penutupan memudahkan penciptaan pengendali acara yang mengekalkan keadaan yang relevan dengan peristiwa yang mencetuskan.

Cara Membuat Penutupan

Mencipta penutupan dalam Python melibatkan penentuan fungsi bersarang dalam fungsi lain:

def make_counter():
    i = 0
    def counter():  # counter() is a closure
        nonlocal i  # Use nonlocal to access i from the enclosing scope
        i += 1
        return i
    return counter

c1 = make_counter()
c2 = make_counter()

print(c1(), c1(), c2(), c2())

Output:

1 2 1 2

Dalam contoh ini, fungsi make_counter mengembalikan penutupan yang mengekalkan kiraan berterusan. Kata kunci bukan tempatan memastikan bahawa penutupan balas mempunyai akses kepada pembolehubah i yang ditakrifkan dalam skop yang disertakan.

Kesimpulan

Penutupan ialah konsep Python asas yang membuka kunci kemungkinan baharu untuk enkapsulasi, pengurusan negeri, dan pengendalian acara. Keupayaan mereka untuk meluaskan skop pembolehubah memperkasakan pembangun untuk mencipta kod yang mantap dan cekap yang bertindak balas secara dinamik kepada keadaan yang berubah-ubah.

Atas ialah kandungan terperinci Bagaimanakah Penutupan Mendayakan Pemeliharaan dan Enkapsulasi Negeri dalam 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