首页 > 解决方案 > 使用装饰器如何调用我的函数?

问题描述

我在python中有一个非常简单的代码,

def my_decorator(func):
    def function_that_runs_func():
        func()
    return function_that_runs_func()

@my_decorator
def my_function():
    print("I am function") 

现在我实际上设置了输出,

我是函数

问题是谁在调用这个函数?我只定义了函数,从不尝试调用它。

python中的装饰器是否类似于C++中的函数指针?

标签: python

解决方案


装饰器只是语法糖,如果使用“@-syntax”,被装饰的函数作为第一个参数隐式传递给装饰器。以下 2 个示例是相同的:

my_function = my_decorator(my_function)

@my_decorator
def my_function():
    print("I am function")

这将是装饰您的功能的正确格式:

def decorator(func):
    def wrapper(*args, **kwargs):
        print('some extra functionality')
        f = func(*args, **kwargs)
        return f
    return wrapper

@decorator
def my_function():
    print("I am function")


推荐阅读