Вызов функции с помощью @

Подскажите что означает вызов функции с помощью символа @

@timeout

https://stackoverflow.com/a/2282656


Ответы (1 шт):

Автор решения: вася

Это синтаксис декоратора.

Документация.

Пример:

from functools import wraps
from time import time


def timing(f):
    @wraps(f)
    def wrap(*args, **kw):
        ts = time()
        result = f(*args, **kw)
        te = time()
        print('func:%r args:[%r, %r] took: %2.4f sec' %
            (f.__name__, args, kw, te-ts))
        return result
    return wrap


@timing
def f(a):
    for _ in range(a):
        i = 0
    return -1


f(100000000)  # Вывод: func:'f' args:[(100000000,), {}] took: 1.9272 sec
→ Ссылка