Мы можем переписать украшение следующим образом:
def succ(x):
return x + 1
succ = call_counter(succ)
Так что теперь у вас есть украшенный succ
.Как вы можете видеть в call_counter
, он на самом деле возвращает функцию с именем helper
.И эта helper
функция имеет один атрибут с именем calls
, который используется для подсчета вызовов.Так что теперь, когда вы вызываете succ(i)
, вы на самом деле вызываете эту helper
функцию.
И да, calls
- это просто нормальная переменная.