Что означает `@` в Python?

как @login_required ?

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

Определение функции может быть обернуто одним или несколькими выражениями декоратора. Выражения декоратора оцениваются при определении функции в области, содержащей определение функции. Результат должен быть вызываемым, который вызывается с объектом функции как единственный аргумент. Возвращаемое значение привязывается к имени функции вместо объекта функции. Множество декораторов применяются вложенным образом.

Так что делайте что-то вроде этого:

 @login_required def my_function(): pass 

Это просто причудливый способ сделать это:

 def my_function(): pass my_function = login_required(my_function) 

Для получения дополнительной информации ознакомьтесь с документацией .

Если вы зададите этот вопрос, вы, вероятно, будете интересоваться другими скрытыми функциями Python .

Декоратор, также называемый синтаксисом пирога. он позволяет вам «украсить» функцию другой функцией. У вас уже было украшение с staticmethod () и classmethod (). Синтаксис пирога упрощает доступ и расширение.

Этот специфический декоратор выглядит так, как будто это происходит от Django.

Это может помочь вам лучше понять, прочитав документацию Django об этом декораторе.

Это декоратор. Подробнее здесь: http://www.ibm.com/developerworks/linux/library/l-cpdecor.html

Некоторые ресурсы для декоратора: декоратор , PEP 318: Декораторы для функций и методов , PythonDecorators и PythonDecoratorLibrary .

Статья декоратора на DDJ и другая статья (сообщение в блоге).