และเรายังสามารถใช้มันได้โดยไม่ต้องประกาศชื่อ ใช้เสร็จครั้งเดียวก็จบ ไม่ต้องประกาศเป็นฟังก์ชันให้วุ่นวาย
ข้อดีคือ ใน code ที่มีขนาดใหญ่มากๆ จะช่วยลดความสับสนของเราไปได้ครับ
สำหรับส่วนปิดกั้น (closure) คือเหตุการณ์ที่เกิดขึ้นตอนประกาศฟังก์ชันที่เมื่อมีการขอใช้ตัวแปรจาก
nonlocal
มันจะ freeze ค่านั้นไว้ เพื่อให้การเรียกใช้ฟังก์ชันนี้ในอนาคตไม่มีผลข้างเคียง ไม่ว่าค่าของตัวแปรที่ไปอ้างอิงมานั้นจะเปลี่ยนแปลงไป
แม้ว่า Python จะไม่มี syntax เฉพาะสำหรับประกาศ closure เช่นภาษาอื่น แต่ด้วยการส่งผ่านตัวแปร by value และหน้าตาของ scope ตัวแปร ทำให้การสร้าง closure สามารถทำได้ดังนี้ครับ
เป็นประโยชน์มากครับ
ReplyDelete