Yürütme süresini ölçen bir dekoratörüm var ve işlev adını saatle birlikte yazdırmak istiyorum. Bu, function.__name__
'u kullanabileceğim kadar tipik bir özellik. Zor olan bölüm, aşağıdaki formatta olan başka bir dekoratör iliştirdiğim zamandır. Bu durumda Python: Bir işlev içindeki bir işlevin bir işlev içindeki ismini döndürür.
def retry_until(desired_return_value, retries=0):
def decorator(f):
def wrapper(*args, **kwargs):
ben sarıcı fonksiyonunda
f.__name__
yazdırmak ve ben
f.__name__
için olsun değer sarıcı(). Değerin, dekore edilmiş işlev adı olmasını isterim. Bunu yapmanın bir yolu var mı?
Örnek:
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
teşekkürler yığınlar. Wraps (f) dekoratör mükemmel çalıştı. – Cameron