Rumah >pembangunan bahagian belakang >Tutorial Python >Penutupan Python lwn. Fungsi Bersarang: Apakah Perbezaannya?
Penutupan lwn. Fungsi Bersarang dalam Python: Penjelasan
Python menampilkan konsep yang dikenali sebagai "fungsi bersarang," sering disalah anggap sebagai penutupan. Untuk menangani kekeliruan ini, mari kita mendalami sifat sebenar penutupan dalam Python.
Penutupan ditakrifkan sebagai fungsi yang mengekalkan akses kepada pembolehubah setempat daripada skop yang disertakan, walaupun selepas skop itu telah tamat. Dalam Python, penutupan timbul apabila fungsi bersarang merujuk pembolehubah tempatan daripada fungsi lampiran. Pembolehubah ini kekal boleh diakses di luar skop lampiran kerana akses fungsi bersarang kepada mereka.
Pertimbangkan contoh berikut:
def make_printer(msg): def printer(): print(msg) return printer printer = make_printer('Foo!') printer()
Dalam senario ini, pencetak fungsi adalah penutupan kerana ia merujuk msg pembolehubah tempatan daripada fungsi yang disertakan make_printer. Walaupun selepas make_printer selesai, msg kekal boleh diakses oleh pencetak.
Walau bagaimanapun, tidak semua fungsi bersarang adalah penutupan. Untuk fungsi bersarang layak sebagai penutupan, ia mesti memenuhi kriteria berikut:
Jika fungsi bersarang tidak memenuhi keperluan ini, ia tidak dianggap sebagai penutupan sebaliknya bersarang biasa fungsi.
Sebagai contoh, pertimbangkan kod berikut:
def make_printer(msg): def printer(msg=msg): print(msg) return printer printer = make_printer("Foo!") printer() # Output: Foo!
Di sini, pencetak fungsi bersarang bukanlah penutup kerana ia tidak merujuk mesej daripada fungsi yang dilampirkan. Sebaliknya, ia memberikan parameter lalai nilai, menghapuskan keperluan untuk akses luaran kepada msg.
Oleh itu, untuk membezakan antara penutupan dan fungsi bersarang dalam Python, adalah penting untuk mempertimbangkan sama ada fungsi bersarang mengekalkan akses kepada atau tidak. pembolehubah tempatan daripada skop yang dilampirkan walaupun selepas yang terakhir telah menyelesaikan pelaksanaan.
Atas ialah kandungan terperinci Penutupan Python lwn. Fungsi Bersarang: Apakah Perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!