Получить имя декорированной функции? [дубликат]

Попытайтесь читать Моно исходный код для получения взгляда на то, как смотрит компилятор C#, записанный в C#. Вы узнаете так много о языке, компиляторах и архитектуре ЭВМ. Это - большое преимущество проекта с источником - можно извлечь уроки из него.

26
задан SilentGhost 3 February 2011 в 14:36
поделиться

4 ответа

Вы можете использовать wraps из functools.

Есть четкий пример, который вам подходит:)

18
ответ дан 28 November 2019 в 06:33
поделиться

functools.wraps не нужен! Просто используйте method.__name__

import time

def timeit(method):
    def timed(*args, **kw):
        ts = time.time()
        result = method(*args, **kw)
        te = time.time()
        print('Function', method.__name__, 'time:', round((te -ts)*1000,1), 'ms')
        print()
        return result
    return timed

@timeit
def math_harder():
    [x**(x%17)^x%17 for x in range(1,5555)]
math_harder()

@timeit
def sleeper_agent():
    time.sleep(1)
sleeper_agent()

Выходы:

Function math_harder time: 8.4 ms
Function sleeper_agent time: 1003.7 ms
38
ответ дан 28 November 2019 в 06:33
поделиться

Ознакомьтесь с functools.wraps . Требуется Python 2.5 или выше, хотя, если это проблема.

3
ответ дан 28 November 2019 в 06:33
поделиться
2
ответ дан 28 November 2019 в 06:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: