Nested Functions
Coddyの「Pythonデコレーター」コースのレッスン 2/12。
デコレータについて深く掘り下げる前に、Pythonの関数に関連するいくつかの重要な概念を理解する必要があります。
Pythonでは、ある関数の中にもう一つの関数を含めることができます。これは入れ子になった関数(ネストされた関数)としても知られています。
例えば、
def outer_function():
print("This is the outer function.")
def inner_function():
print("This is the inner function.")
inner_function()
この例では、outer_function には inner_function という名前の入れ子になった関数が含まれています。
outer_function が呼び出されると、最初に "This is the outer function." と出力し、次に inner_function を呼び出します。その後、inner_function が "This is the inner function." と出力します。
inner_function は outer_function の中からしか呼び出せないことに注意してください。
outer_function の外側で inner_function を呼び出そうとすると、inner_function が定義されていないという NameError が発生します。
チャレンジ
簡単引数として name を受け取り、その名前を含む挨拶メッセージを返す greeting_generator という名前の関数を作成してください。
挨拶メッセージは、get_greeting という名前の入れ子になった関数によって生成される必要があります。この関数は引数として name を受け取り、"Hello, [name]!" という文字列を返します。
関数の動作例を以下に示します。
>>> greeting = greeting_generator("Alice")
>>> greeting
"Hello, Alice!"
>>> greeting = greeting_generator("Bob")
>>> greeting
"Hello, Bob!"
制約事項
- 挨拶メッセージを生成するために、
get_greetingという名前の入れ子になった関数を使用する必要があります。 - 挨拶メッセージには、
greeting_generatorに渡されたnameが含まれている必要があります。
自分で試してみよう
Pythonデコレーターのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ