Это синтаксис декоратора.
Определение функции может быть заключено в одно или несколько выражений декоратора. Выражения декоратора оцениваются, когда функция определена, в области, содержащей определение функции. Результат должен быть вызываемым, который вызывается с объектом функции в качестве единственного аргумента. Возвращаемое значение привязывается к имени функции вместо объекта функции. Несколько декораторов применяются во вложенном виде.
Делая что-то вроде этого:
@login_required
def my_function():
pass
Это просто модный способ сделать это:
def my_function():
pass
my_function = login_required(my_function)
Для получения дополнительной информации ознакомьтесь с документацией .