1. 学ぶ
  2. /
  3. コース
  4. /
  5. Python関数の書き方

Connected

演習

デコレータのオーバーヘッドを測る

あなたの上司は check_everything() というデコレータを作り、とても優れていると主張しており、あなたの関数にも使うよう強く勧めています。しかし、このデコレータで関数を装飾すると実行がかなり遅くなることに気づきました。デコレータが処理時間をかけ過ぎていることを上司に納得してもらう必要があります。そのために、装飾済み関数の実行時間を測り、装飾しない場合にかかる時間と比較します。問題のデコレータは次のとおりです。

def check_everything(func):
  @wraps(func)
  def wrapper(*args, **kwargs):
    check_inputs(*args, **kwargs)
    result = func(*args, **kwargs)
    check_outputs(result)
    return result
  return wrapper

指示

100 XP
  • 上司のデコレータ内の wraps() 文によって装飾済み関数に追加された属性を使い、装飾版ではなく元の関数を呼び出してください。