巢狀函式 II
做得好!你剛剛在一個函式裡面又巢狀了一個函式。將函式巢狀的另一個很棒的原因是「閉包」(closure)。意思是,當內部函式被呼叫時,它會記住外層作用域的狀態。因此,只要是在外層作用域中區域定義的內容,即使外層函式已經執行完畢,內部函式依然可以使用。
繼續往下吧!在這個練習中,你會完成內部函式 inner_echo() 的定義,接著多次呼叫 echo(),每次傳入不同的引數。把練習完成,看看會輸出什麼結果!
本練習屬於課程
Python 函式入門
練習說明
- 完成內部函式的函式標頭,使用函式名稱
inner_echo(),並加入單一參數word1。 - 完成
echo(),讓它回傳inner_echo。 - 我們已經呼叫了
echo(),把 2 當作引數傳入,並將回傳的函式指定給twice。接下來由你呼叫echo(),把 3 當作引數傳入,並將回傳的函式指定給thrice。 - 按下 Submit 以呼叫
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'))