您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

解释Python装饰器的工作原理

解释Python装饰器的工作原理

装饰器是在Python中应用高阶函数的语法糖。高阶函数是将一个或多个函数作为输入并返回一个函数函数。即

h(x) = f(g(x))

这里f()一个高阶函数,它接受单个参数g(x)函数,并返回单个参数的函数h(x)。您可以将其f()视为修改的行为g()

高阶函数可组合的(根据定义),因此在您的特定示例中,装饰器语法,

@helloGalaxy
@helloSolarSystem
def hello(targetName=None):
    ...

等价于

hello = helloGalaxy(helloSolarSystem(hello))

通过将代hellohelloSolarSystem,然后将其代入helloGalaxy,我们得到等效的函数调用

def hello(targetName=None):
    if targetName:                            |        
        print("Hello, " + targetName + "!")   |  (1)  |
    else:                                     |       |  (2)   |
        print("Hello, world!")                |       |        |  (3)
    print("Hello, solar system!")                     |        |
    print("Hello, galaxy!")                                    |

其中(1)是原件的应用hello(),(2)是原件的应用,

def helloSolarSystem(original_function):
    def new_function(*args, **kwargs):
        original_function(*args, **kwargs)   <-- (1)
        print("Hello, solar system!")
    return new_function

(3)是的应用,

def helloGalaxy(original_function):
    def new_function(*args, **kwargs):
        original_function(*args, **kwargs)   <-- (2)
        print("Hello, galaxy!")
    return new_function
python 2022/1/1 18:48:09 有418人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶