ฟังก์ชันภายในฟังก์ชันใน Python
ใน Python ภายในฟังก์ชันหนึ่งสามารถประกาศ
ฟังก์ชันอื่นได้ สมมติว่าเรามีฟังก์ชันภายนอก
outer ภายในซึ่งมีฟังก์ชัน
inner อยู่:
def outer():
def inner():
pass
ตัวอย่างที่นำเสนอดูค่อนข้างง่าย อย่างไรก็ตาม มักมีสถานการณ์เมื่อ
ในเนื้อความของฟังก์ชัน outer นอกเหนือจาก
inner แล้ว ยังมีการดำเนินการอื่นๆ อีก
เพื่อลดความซับซ้อนของโค้ด อาจ
แยก inner ออกไปยังบล็อกภายนอก
ของโค้ดได้ แต่ว่าฟังก์ชันนี้จะถูกใช้งาน
เพียงครั้งเดียวและเฉพาะภายในฟังก์ชัน
outer เท่านั้น ดังนั้นการแยกมันออกไปภายนอก
จึงไม่มีความหมาย
ลองพิจารณาตัวอย่าง เมื่อมีการส่งลิสต์
เข้าไปในฟังก์ชัน outer และด้วยความช่วยเหลือของ
ฟังก์ชัน inner องค์ประกอบตัวเลข
ของลิสต์จะถูกยกกำลังสอง
เพื่อการนี้ หลังจากฟังก์ชัน inner
เราประกาศลิสต์ว่าง res ซึ่ง
จะสะสมองค์ประกอบต่างๆ
ที่ถูกยกกำลังสองในลูป:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
ลองเรียกใช้ฟังก์ชัน outer
ส่งพารามิเตอร์ลิสต์ให้มันและแสดง
ผลลัพธ์ในคอนโซล:
print(outer([2, 3, 5])) # จะแสดง [4, 9, 25]
เขียนฟังก์ชันภายนอกและฟังก์ชันภายใน ซึ่งการทำงานร่วมกันจะแสดง แต่ละองค์ประกอบสตริงของลิสต์ด้วยตัวอักษรพิมพ์ใหญ่ ที่ต้นคำ
กำหนดฟังก์ชัน:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
เขียนโค้ดใหม่เพื่อให้ func1
เป็นฟังก์ชันภายในสำหรับ func2