Кто звонит fnc
?
В основном, ()
позади a1
в последней строке кода.
Итак, что происходитна?Декораторы предназначены для изменения поведения функций.
Таким образом, когда вы что-то декорируете, создается новая функция на основе того, что декоратор возвращает.Это означает, что декоратор запускается один раз , когда a1
определено .Вот пример, который демонстрирует это:
print 'def b1'
def b1(fnc):
print "b1"
return fnc
print 'def a1'
@b1
def a1():
print "a1"
if __name__ == "__main__":
print 'main'
a1() # will print b1 a1
Это напечатает:
def b1
def a1
b1
main
a1
Как вы можете видеть, декоратор b1
вызывается до выполнения main
.
Возвращает экземпляр функции, который назначен псевдониму a1
, который может использоваться как любой другой экземпляр функции.
Это то, что «оператор вызова» ()
после a1
в последней строке кода делает.