admin管理员组文章数量:1442512
Python 中的装饰器(decorator)是什么?有什么作用?
在 Python 中,装饰器(decorator)是一种函数,用于在不修改原函数代码的情况下,扩展或修改函数的行为。装饰器通常用于日志记录、权限验证、缓存等场景。装饰器本质上是一个高阶函数,它接受一个函数作为参数并返回一个新的函数。
以下是一个简单的装饰器示例:
代码语言:javascript代码运行次数:0运行复制def my_decorator(func):def wrapper():print("在函数调用之前触发")
func()
print("在函数调用之后触发")
return wrapper
@my_decoratordef say_hello():print("Hello!")
say_hello()
在这个示例中:
my_decorator
是一个装饰器函数,它接受一个函数func
作为参数,并定义了一个内部函数wrapper
来包裹func
。wrapper
函数在调用func
之前和之后添加了一些操作,然后调用func
。@my_decorator
语法糖用于将say_hello
函数传递给my_decorator
,相当于say_hello = my_decorator(say_hello)
。- 当调用
say_hello()
时,会执行wrapper
函数,从而在say_hello
函数前后添加了额外的行为。
输出结果如下:
代码语言:javascript代码运行次数:0运行复制在函数调用之前触发
Hello!
在函数调用之后触发
装饰器可以带参数,可以用于类方法,还可以将多个装饰器叠加使用。以下是一个带参数的装饰器示例:
代码语言:javascript代码运行次数:0运行复制def repeat(num_times):def decorator_repeat(func):def wrapper(*args, **kwargs):for _ inrange(num_times):
result = func(*args, **kwargs)
return result
return wrapper
return decorator_repeat
@repeat(num_times=3)def greet(name):print(f"Hello, {name}!")
greet("Alice")
在这个示例中,我们定义了一个 repeat
装饰器,它接受一个参数 num_times
,用于指定函数应被调用的次数。
输出结果如下:
代码语言:javascript代码运行次数:0运行复制Hello, Alice!
Hello, Alice!
Hello, Alice!
本文标签: Python 中的装饰器(decorator)是什么有什么作用
版权声明:本文标题:Python 中的装饰器(decorator)是什么?有什么作用? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1748037299a2795521.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论