ฟังก์ชันซ้อนฟังก์ชัน II
ยอดเยี่ยมมาก! ตอนนี้คุณได้ลองซ้อนฟังก์ชันไว้ภายในฟังก์ชันอื่นแล้ว อีกเหตุผลหนึ่งที่การซ้อนฟังก์ชันมีประโยชน์คือแนวคิดของ closure นั่นคือ ฟังก์ชันภายใน (inner function) จะ "จดจำ" สถานะของ scope ที่ครอบมันอยู่ไว้ ดังนั้นทุกอย่างที่นิยามไว้ใน scope ภายนอกจะยังคงเข้าถึงได้จากฟังก์ชันภายใน แม้ว่าฟังก์ชันภายนอกจะทำงานเสร็จแล้วก็ตาม
ในแบบฝึกหัดนี้ คุณจะเติมนิยามของฟังก์ชันภายใน inner_echo() ให้สมบูรณ์ แล้วเรียกใช้ echo() สองครั้งโดยส่งอาร์กิวเมนต์ที่ต่างกัน ลองทำดูแล้วสังเกตผลลัพธ์ที่ได้!
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้น: การเขียนฟังก์ชัน
คำแนะนำการฝึกหัด
- เติม function header ของฟังก์ชันภายในให้สมบูรณ์ โดยตั้งชื่อว่า
inner_echo()และรับพารามิเตอร์หนึ่งตัวชื่อword1 - เติมฟังก์ชัน
echo()ให้ return ค่าinner_echo - โค้ดได้เรียก
echo()โดยส่ง 2 เป็นอาร์กิวเมนต์และกำหนดฟังก์ชันที่ได้ไว้ในตัวแปรtwiceแล้ว หน้าที่ของคุณคือเรียกecho()โดยส่ง 3 เป็นอาร์กิวเมนต์ และกำหนดผลลัพธ์ให้กับตัวแปรthrice - กด ส่งคำตอบ เพื่อเรียกใช้
twice()และthrice()แล้วดูผลลัพธ์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define echo
def echo(n):
"""Return the inner_echo function."""
# Define inner_echo
def ____(____):
"""Concatenate n copies of word1."""
echo_word = word1 * n
return echo_word
# Return inner_echo
# Call echo: twice
twice = echo(2)
# Call echo: thrice
# Call twice() and thrice() then print
print(twice('hello'), thrice('hello'))