การสร้างฟังก์ชันซ้อนฟังก์ชัน


แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderators: mindphp, ผู้ดูแลกระดาน

dawthana
PHP Super Hero Member
PHP Super Hero Member
Posts: 604
Joined: 07/12/2016 10:55 am

การสร้างฟังก์ชันซ้อนฟังก์ชัน

Post by dawthana » 28/02/2017 1:14 pm

ฟังก์ชันซ้อนฟังก์ชัน
การสร้างฟังก์ชันในภาษา python (ไพทอน) จะมีทั้งแบบการสร้างฟังก์ชันธรรมดาทั่วไป และการสร้างฟังก์ชันแบบฟังก์ชันซ้อนฟังก์ชัน ซึ่งฟังก์ชันซ้อนฟังก์ชัน เป็นการสร้างฟังชันโดยมีการประกาศฟังก์ชันไว้ภายในที่จะประกาศใช้ได้แค่เพียงภายในเท่านั้น ไม่สามารถประกาศออกมาเรียกใช้ด้านนอกได้
ตัวอย่างการสร้างฟังก์ชันซ้อนฟังก์ชันแบบซ้อน 2 ชั้น

Code: Select all

def a(x):
    def b():
        return x
    a = b()
    return a
print(a(5))
ผลลัพธ์ที่ได้

Code: Select all

5
จะเห็นได้ว่า ในส่วนของ print ไม่สามารถ print b ออกมาได้ เพราะ b เป็นฟังก์ชันภายใน หากมีการสั่ง print ฟังก์ชันภายในจะขึ้น NameError: name 'b' is not defined คือ ไม่พบตัวแปร b
ตัวอย่างการสร้างฟังก์ชันซ้อนฟังก์ชันแบบซ้อน 3 ชั้น

Code: Select all

def a():
    def b():
        def c():
            return 10
        return c
    return b

print(a()()())
ผลลัพธ์ที่ได้

Code: Select all

10
คำอธิบาย
ส่วนนี้เป็นการสร้างฟังก์ชันซ้อนกัน 3 ชั้น คือ ฟังก์ชัน a จะมีฟังก์ชันภายในเป็นฟังก์ชัน b และ c ฟังก์ชัน c คืนค่า 10 มาที่ฟังก์ชัน c คืนค่า c มาที่ฟังก์ชัน b คืนค่าฟังก์ชัน b มาที่ฟังก์ชัน a print a มาผลลัพธ์จึงได้ 10

Return to “Python Knowledge”

Users browsing this forum: facebook.com [Crawler] and 10 guests