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

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

3 голосов
/ 28 июня 2009

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

Пример: @login_required и т. Д.

Ответы [ 6 ]

30 голосов
/ 28 июня 2009

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

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

Делая что-то вроде этого:

@login_required
def my_function():
    pass

Это просто модный способ сделать это:

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

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

1 голос
/ 28 июня 2009

Этот конкретный декоратор выглядит так, как будто он от Джанго.

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

1 голос
/ 28 июня 2009

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

1 голос
/ 28 июня 2009

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

1 голос
/ 28 июня 2009

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

0 голосов
/ 28 июня 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...