ฟังก์ชันซ้อนใน (Nested Functions) I
ในวิดีโอที่ผ่านมา คุณได้เรียนรู้เรื่องการซ้อนฟังก์ชันไว้ภายในฟังก์ชัน ซึ่งเป็นวิธีที่ช่วยให้ไม่ต้องเขียนโค้ดคำนวณซ้ำกันหลายครั้ง การนิยาม nested function ไม่มีอะไรซับซ้อน เพียงใช้ def เหมือนฟังก์ชันปกติ แล้ว embed ไว้ภายในฟังก์ชันอื่น
ในแบบฝึกหัดนี้ ให้นิยามฟังก์ชันซ้อนใน inner() ไว้ภายในฟังก์ชัน three_shouts() โดย inner() จะทำหน้าที่ต่อ string เข้ากับ !!! จากนั้น three_shouts() จะ return tuple ที่มี 3 elements ซึ่งแต่ละ element คือ string ที่ผ่านการต่อด้วย !!! โดยใช้ inner() ลองทำได้เลย!
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้น: การเขียนฟังก์ชัน
คำแนะนำการฝึกหัด
- กำหนด function header ของฟังก์ชันซ้อนใน โดยตั้งชื่อว่า
inner()และมีพารามิเตอร์ 1 ตัวชื่อword - กำหนด return value โดยแต่ละ element ใน tuple ต้องเป็นการเรียกใช้
inner()และส่งพารามิเตอร์จากthree_shouts()เป็น argument ในแต่ละครั้ง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define three_shouts
def three_shouts(word1, word2, word3):
"""Returns a tuple of strings
concatenated with '!!!'."""
# Define inner
def ____(____):
"""Returns a string concatenated with '!!!'."""
return word + '!!!'
# Return a tuple of strings
return (____, ____, ____)
# Call three_shouts() and print
print(three_shouts('a', 'b', 'c'))