4
実行時間を測定するデコレータがあります。関数名も時間とともに表示したいと思います。私はちょうどfunction.__name__
を使うことができるので、通常は十分簡単です。トリッキーな部分は、次の形式の別のデコレータを添付するときです。この場合Python:関数内の関数内の関数の名前を返します。
def retry_until(desired_return_value, retries=0):
def decorator(f):
def wrapper(*args, **kwargs):
)(Iは、ラッパー関数でf.__name__
を印刷し、私はf.__name__
ために得る値は、ラッパーです。値を装飾されている関数名にしたいと思います。これを行う方法はありますか?
例:
def get_execution_time(f):
def wrapper(*args, **kwargs):
start_time = time.time()
ret = f(*args, **kwargs)
print(f.__name__ + "() completed in %s seconds" % (time.time() - start_time))
return ret
return wrapper
@get_execution_time
def test(): # Function name is "test"
pass
@get_execution_time
@retry_until(False, 2)
def test(): # Function name is "wrapper", the inner-most function in retry_until
pass
おかげでヒープを。ラップ(f)デコレータは完璧に動作しました。 – Cameron