下記コードで
「document_it
はadd_ints
という関数を引数に持っていて、
new_function
は(3,5)
を引数に持っている(new_function
がfunc
をadd_int
だと記憶していることは知っている)」
ことはわかっているのですが、実際に関数呼び出しをするときの引数の挙動が把握できておりません。
イメージとしては、画像一番最後の行のように、(add_ints)
→(3,5)
の順に階層構造になっており、(add_ints)
は一番最初の階層ですので引数func
に参照され、(3,5)
は二番目の階層なのでdocument_it関数
より階層構造が一つ下である(このような言い方はしない気もしますが、)new_function関数
の可変調位置引数*argに参照されるということで合っているのでしょうか?
# デコレータ ''' ・関数名と引数の値を表示 ・その引数を渡して関数を実行する ・結果を表示 ・実際の変更後の関数を返す ''' def document_it(func): def new_function(*args, **kwargs): print('Running function', func.__name__) print('Positional arguments:', args) print('Keyword arguments:', kwargs) result = func(*args, **kwargs) print('Result:', result) return result return new_function def add_ints(a, b): return a + b add_ints(3,5) cooler_add_ints = document_it(add_ints) cooler_add_ints(3,5)
出力
Running function add_ints Positional arguments: (3, 5) Keyword arguments: {} Result: 8 8
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/18 08:20
2020/03/18 08:29
2020/03/18 09:03
2020/03/18 09:18
2020/03/18 09:26 編集
2020/03/18 09:26
2020/03/18 09:28
2020/03/18 10:00 編集
2020/03/18 10:36