9.1.4引数を受け取るデコレーター
教科書通りに書くと
教科書通りに書くと
>>> #引数を受け取るデコレーター
>>> def log_func(details=True):
... #修飾すべき関数を受け取る
... def outer(func):
... #本来の関数に渡すべき引数を受け取る
... def inner(*args, **keywds):
... print('--------------')
... print(f'Name: {func.__name__}')
... if details:
... print(f'Args: {args}')
... print(f'Keywds: {keywds}')
... print('-------------')
... return func(*args, **keywds)
... return inner
... return outer
...
>>> @log_func(details=False)
... def hoge(x, y, m='bar', n='piyo'):
... print(f'hoge: {x}-{y}/{m}-{n}')
...
>>> hoge(15, 37, m='ほげ', n='ぴよ')
--------------
Name: hoge
-------------
hoge: 15-37/ほげ-ぴよ
>>>
となるのですが、教科書の求められている答えとは違うものになります。
チャットGPT4による修正だと
となるのですが、教科書の求められている答えとは違うものになります。
チャットGPT4による修正だと
>>> def log_func(details=True):
... def outer(func):
... def inner(*args, **keywds):
... print('--------------')
... print(f'Name: {func.__name__}')
... print(f'Args: {args}') # ifブロックから出しました。
... print(f'Keywds: {keywds}') # ifブロックから出しました。
... print('-------------')
... return func(*args, **keywds)
... return inner
... return outer
...
>>> @log_func(details=False)
... def hoge(x, y, m='bar', n='piyo'):
... print(f'hoge: {x}-{y}/{m}-{n}')
...
>>> hoge(15, 37, m='ほげ', n='ぴよ')
--------------
Name: hoge
Args: (15, 37)
Keywds: {'m': 'ほげ', 'n': 'ぴよ'}
-------------
hoge: 15-37/ほげ-ぴよ
>>>修正した方が近づくのですがやはり少し違うみたいです。
問題は答えを求めるために修正する力が必要なのか、求められているコードにより解決をしていくのか
どちらを優先すべきかがわかっていないことです。
問題は答えを求めるために修正する力が必要なのか、求められているコードにより解決をしていくのか
どちらを優先すべきかがわかっていないことです。
コメント