python初心者のものです。
あるサイトで初心者用のデコレータ関連の記事を読んでいて自分でコードを書いていじっていたところ、
どうしても仕組みを理解できない関数(といっていいのかわかりませんが…)が出来上がってしまいました。
エラーが発生しないので、ますますわかりません。どなたか教えていただけないでしょうか。
コードは下記です。
python3
1def scramble(egg): 2 def _scramble(): 3 return "scramble " + egg() + "!" 4 return _scramble 5 6def potato(): 7 return "egg" 8 9if __name__ == '__main__': 10 scramble_egg = scramble(potato) 11 print(scramble_egg()) 12 13#scramble egg! が表示されます
scramble()関数を引数potatoで呼び出すということだと思うのですが、
potato()関数がないと「potatoが定義されていない」というエラーになります。
potato()は一切かかわていないと思うのですが…。
ためしにtypeで型を調べてみました。
python3
1print(type(potato)) #func 2print(type(potato())) #str 3
これはつまりscramble()の引数potatoは関数で、
関数が呼ばれてeggがreturnされ、scramble()の引数にeggが入ったということでしょうか?
よろしくおねがいします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/07 00:53