python - 使用装饰器如何调用我的函数?
问题描述
我在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++中的函数指针?
解决方案
装饰器只是语法糖,如果使用“@-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")
推荐阅读
- javascript - 生成随机数背后的数学(Crash game BTC Casino)
- scala - 使用另外两个创建一个新的 DF
- javascript - 如何让不和谐机器人在命令上创建频道
- visual-studio-code - 终端命令消失了
- apache - 子域及其文件夹重写
- asp.net-core-mvc - 为什么我的 ASP.NET Core MVC 应用程序在错误的 wwwroot 路径中运行?
- python - 如何在另一个数组中找到一个数组对应的索引?(Python)
- java - 从java中的firebase检索数据我想读取文本“天线”并将其放在文本视图中
- javascript - 如何使用onclick javascript函数输入标签html
- flutter - 如何在 Flutter Web 中支持 HTTP 标头 NetworkImage