เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ฟังก์ชันซ้อนฟังก์ชัน 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'))
แก้ไขและรันโค้ด