Python 将装饰程序转换为其实现代码
我正在学习装饰,发现了这个有用的线索,真的帮了我很多。 根据我的理解,装饰者只是语法上的糖。但是,我在从语法糖代码转换为非语法糖代码时遇到了困难Python 将装饰程序转换为其实现代码,python,python-decorators,Python,Python Decorators,我正在学习装饰,发现了这个有用的线索,真的帮了我很多。 根据我的理解,装饰者只是语法上的糖。但是,我在从语法糖代码转换为非语法糖代码时遇到了困难 # Decorators def addBold(func): def wrapper(*arg1): print("Bold Added") return '<b>' + func(*arg1) + '</b>' return wrapper def addItalic(fu
# 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
如果没有decorator语法糖,工作代码(第二个块)看起来像什么?您需要将要包装的函数传递给decorator函数,然后使用参数调用返回的包装器:
wrapped_getHTMLCode = addBold(getHTMLCode)
wrapped_getHTMLCode('Hello')
请注意
wrapped\u getHTMLCode
的工作原理与getHTMLCode
的装饰版本类似。您使用希望加粗的字符串调用它,它返回的字符串周围带有HTML加粗标记。您需要将要包装的函数传递给decorator函数,然后使用以下参数调用返回的包装器:
wrapped_getHTMLCode = addBold(getHTMLCode)
wrapped_getHTMLCode('Hello')
请注意wrapped\u getHTMLCode
的工作原理与getHTMLCode
的装饰版本类似。您使用希望加粗的字符串调用它,它返回的字符串周围带有HTML加粗标记
wrapped_getHTMLCode = addBold(getHTMLCode)
wrapped_getHTMLCode('Hello')