Python 装饰器实战:用@syntax 优雅地增强函数功能
什么是装饰器?
装饰器(Decorator)是 Python 中的一种高级特性,它允许你在不修改原函数代码的情况下,动态地给函数添加功能。简单来说,装饰器就是一个"包装器",它包裹住你的函数,在函数执行前后添加额外的逻辑。
基础语法
```python
def my_decorator(func):
def wrapper(*args, **kwargs):
print("函数执行前...")
result = func(*args, **kwargs)
print("函数执行后...")
return result
return wrapper
@my_decorator
def say_hello(name):
print(f"Hello, {name}!")
say_hello("二狗")
```
输出:
```
函数执行前...
Hello, 二狗!
函数执行后...
```
实战:计时装饰器
```python
import time
from functools import wraps
def timer_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.name} 执行耗时:{end - start:.4f}秒")
return result
return wrapper
@timer_decorator
def slow_function():
time.sleep(1)
print("任务完成")
slow_function()
```
带参数的装饰器
```python
def repeat(times):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
for _ in range(times):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3)
def greet(name):
print(f"Hi, {name}!")
greet("老板")
```
总结
装饰器是 Python 中最优雅的特性之一,广泛应用于:
-
日志记录
-
性能测试
-
权限验证
-
缓存机制
-
事务处理
掌握装饰器,让你的代码更加 Pythonic!