Python初心者です。書籍を購入して勉強していますが、内容を読んでも意味が分からない箇所があったので質問します。
書籍:Pythonプログラミング パーフェクトマスター (秀和システム)
バージョン:Python 3.7 64bit
P162 高階関数
コード)
①def attack_sound(a,s):
print(a,"-->",s)
......
②def run_something(func,arg1,arg2):
func(arg1,arg2)
......
③run_something(attack_sound,"ドロップショット","ポワーン")
実行結果: ドロップショット-->ポワーン
attack_sound()関数にはパラメーターが2つありますので、run_something()には関数オブジェクトを受け取るパラメーターと関数に渡す引数のための2つのパラメーターを用意しました。
以上が本の内容になります。
質問 ②の関数run_something()のパラメーター、arg1,arg2、また、その下のfunc(arg1,arg2)の役割がわかりません。
本によると、関数に渡すパラメーターだそうですが、①でパラメーターが(a,s)となっているのに、なぜ②でまた新しいパラメーターを定義する必要があるのですか?
①の関数でprint(a,"-->"s)、②でarg1,arg2を定義して③に行き、③の引数が(attack_sound,"ドロップショット","ポワーン")となっています。"ドロップショット","ポワーン"がarg1,arg2の引数だということまではわかりましたが、実行結果で「ドロップショット-->ポワーン」となり、②の引数と順番が異なり急に①で定義したprint(a,"-->"s)が反映されています。print()で、「①でprint(a,"-->"s)を定義したから実行結果は同じ形になるんだな」ということはわかりますが、構造自体がわかりません。
意味不明な文章で上手く説明できず申し訳ありませんが
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/15 01:54