Я изучаю декораторы и нашел этот полезный поток, который мне очень помог. How to make a chain of function decorators?Преобразование декораторов в их код реализации
Основываясь на том, что я понимаю, декораторы - это просто синтаксический сахар. Однако у меня возникли проблемы с преобразованием кода синтаксического сахара в несинтаксический код сахара.
# Decorators
def addBold(func):
def wrapper(*arg1):
print("Bold Added")
return '<b>' + func(*arg1) + '</b>'
return wrapper
def addItalic(func):
def wrapper(*arg1):
print("Italic Added")
return '<i>' + func(*arg1) + '</i>'
return wrapper
Этот код работает:
@addBold
def getHTMLCode(passedText):
return passedText
newVar = getHTMLCode('Hello')
print(newVar)
# outputs: Bold Added <b>Hello</b>
Я попытался преобразования не-синтаксического сахара код, но это не работает (TypeError: 'str' object is not callable
):
def getHTMLCode(passedText):
return passedText
newVar = addBold(getHTMLCode('Hello')) # returns wrapper
newVar()
Что делает рабочий код (второй блок) выглядят без сахара-синтаксиса-декоратора?