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

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

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

dawthana
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 604
ลงทะเบียนเมื่อ: 07/12/2016 10:55 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย dawthana »

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

โค้ด: เลือกทั้งหมด

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

โค้ด: เลือกทั้งหมด

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

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

Play List Python
https://www.mindphp.com/บทเรียนออนไลน์/83-python.html
https://www.youtube.com/watch?v=qBeoKOI ... f8OPMSeGoT

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: Google Adsense [Bot] และบุคลทั่วไป 38