前提
PythonでNested Functionについての実行順序を教えてください。
以下のコードを実行した場合、どの順序でNested Functionが実行されるのでしょうか。
ーーーーーーーーーーーーーーーーーーープログラム
def outer(x): def inner(word): echo = word * x return echo # Return inner_echo return inner ”””POINT A c2 = outer(2) c3 = outer(3) ”””POINT B print(c2(‘hello'), c3('hello'))
上記のプログラムを実行した場合、
はじめてouter(x)が実行されるのは、
POINT Bでしょうか。
もしその場合、以下の順序でプログラムは実行されるのでしょうか。
複数の引数、Nested構文を利用したばあいのプログラムのトレースの仕方を教えてください。
プログラムの実行順序
*”hello”という引数は、innerで利用され、数値2は、outerで利用される。
- print(c2(“hello”), c3(“hello”))が実行される
- はじめに、c2(‘hello’)が実行される。
- その後C2 = outer(2)が実行される
- outer(2)でdef outer(2):が呼び出される。
- Return innerでdef inner(“hello”):呼び出される。
- Echo = word * x が計算され、 hellohelloとなる
- Returnでechoが戻り値となる(hellohello
- Returnでinnerが戻り値となる(hellohello)
- C2に4が格納される
- C3 = outer(3)が実行される
- C2と同じのため省略
ーーーーーーーーーーーーーーーーーーーーーーーーー
質問:
1。プログラムのトレースは正しいでしょうか。
2。今回は、outerが数値、innerが文字列を引数としました。
しかしながらprint(c2(‘hello’), c3(‘hello’))では、functionを呼び出ししていません。(c2を呼び出しただけ。)
なのになぜ、outerが数値、innerが文字列として引数が渡されたのでしょうか。

回答1件
あなたの回答
tips
プレビュー