始める無料で始める

戻り値の型を表示する

友人たちと一緒に作業しているパッケージをデバッグしています。ある関数から返ってくるデータに不思議な挙動があり、どの関数が原因なのかもはっきりしません。関数がある型を返すと想定していたのに、実際は別の型を返してしまうと、バグが紛れ込むことがあります。たとえば、関数がnumpyの配列を返すと期待していたのに、実際はリストを返すと、思わぬ動作になることがあります。これが原因でないことを確かめるため、任意の関数に適用して、その関数呼び出しごとに返される変数の型を表示するデコレータ print_return_type() を作成することにしました。

この演習はコースの一部です

Python関数の書き方

コースを見る

演習の手順

  • ネストした関数 wrapper() を作成し、新しいデコレート後の関数にします。
  • デコレート対象の関数を呼び出します。
  • 新しいデコレート後の関数を返します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

def print_return_type(func):
  # Define wrapper(), the decorated function
  ____ ____(____, ____):
    # Call the function being decorated
    result = ____(____, ____)
    print('{}() returned type {}'.format(
      func.__name__, type(result)
    ))
    return result
  # Return the decorated function
  return ____
  
@print_return_type
def foo(value):
  return value
  
print(foo(42))
print(foo([1, 2, 3]))
print(foo({'a': 42}))
コードを編集して実行