Python 装饰器是什么

Python中的装饰器是一种设计模式,用于在不修改原始函数代码的情况下,给函数添加额外的功能。装饰器本质上是一个函数,它接受一个函数作为参数并返回一个新的函数。装饰器可以在不修改原始函数定义的情况下,增加函数的行为。

装饰器的基本语法如下:

```python
@decorator
def function_to_decorate(*args, **kwargs):
# 函数体
```

这里的`@decorator`就是装饰器的应用,`function_to_decorate`是被装饰的函数。当调用`function_to_decorate()`时,实际上是在调用`decorator(function_to_decorate)`的返回值。

装饰器的工作原理可以分解为以下几个步骤:

1. **定义装饰器**:创建一个函数,它接受一个函数作为参数。
2. **包装函数**:在装饰器内部,定义一个新的函数,这个函数将包装原始函数,并在调用原始函数前后添加额外的行为。
3. **返回包装函数**:装饰器的返回值是一个函数,这个函数将被用来替换原始函数。

下面是一个简单的装饰器示例:

```python
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper

@my_decorator
def say_hello():
print("Hello!")

say_hello()
```

输出结果:
```
Something is happening before the function is called.
Hello!
Something is happening after the function is called.
```

在这个例子中,`my_decorator`是一个装饰器,它接受一个函数`func`作为参数,并返回一个新的函数`wrapper`。`wrapper`函数在调用`func`之前和之后添加了一些额外的打印语句。`say_hello`函数被`@my_decorator`装饰,这意味着`say_hello`实际上被替换为了`my_decorator(say_hello)`的返回值,即`wrapper`函数。

装饰器在Python中非常有用,它们可以用于日志记录、性能测试、事务处理、缓存、权限校验等多种场景。此外,装饰器还可以接受参数,使得它们的功能更加灵活和强大。

posted @   滴滴滴  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2019-12-18 文件中转下载思路
2017-12-18 mysql命令 SHOW TABLE STATUS LIKE '%city%'; 查看表的状态可以查看表的创建时间
2017-12-18 python第三周文件处理和函数-----下
2017-12-18 一个备份语句和常用的修改表的语句
2017-12-18 聚集索引和取消外键,外键影响在大并发下的性能.删除外键
2017-12-18 oracle 索引失效原因
2017-12-18 mysql日期函数 和sql语句扩展information_schema show processlist;
点击右上角即可分享
微信分享提示