Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将装饰程序转换为其实现代码_Python_Python Decorators - Fatal编程技术网

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')