python的装饰器怎么用
时间: 2023-10-08 15:08:54 浏览: 59
Python 的装饰器是一种高级的函数,它可以修改或扩展其他函数的功能。装饰器使用 @ 运算符与需要被修改的函数名称放在一起,它的语法如下:
```python
@decorator
def function():
# function code here
```
装饰器的工作原理是,它将被装饰的函数作为参数传递给装饰器函数,然后由装饰器函数来返回一个新的函数,该新函数包含了装饰器的额外功能。
举个例子,假设我们有一个简单的函数,用于计算两个数的和:
```python
def add(a, b):
return a + b
```
我们可以使用装饰器来扩展这个函数,使其能够记录每次调用的参数和返回值。为此,我们可以定义一个装饰器函数 `logger`,它会打印出每次函数调用的参数和返回值:
```python
def logger(func):
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
print(f'{func.__name__} was called with {args} and {kwargs}, returned {result}')
return result
return wrapper
@logger
def add(a, b):
return a + b
```
现在,每次调用 `add` 函数时,都会自动调用 `logger` 函数,并返回一个新的函数 `wrapper`,该函数包含了 `logger` 的额外功能(即打印参数和返回值)。因此
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)