Python 装饰器实战:用@syntax 优雅地增强函数功能

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!

相关推荐
qq_161111271 小时前
Jenkins+Python自动化测试持续集成详细教程
自动化测试·python·jenkins·教程·持续集成
爱吃苹果的梨叔4 小时前
训练集群网络中断怎么办?智算机房的 Console 串口排障方案
网络·python·智能路由器·php
李妍.8 小时前
02Numpy基础(上)
开发语言·python
TheBestRucy8 小时前
Python 九阳神功之贰:面向对象(下)
开发语言·python
2601_965958468 小时前
口腔黏膜脱皮超2周未愈建议及时就医
人工智能·python
AI_小站9 小时前
刚面完百度的 Agent 开发岗,我才发现:世界就是个巨大的草台班子
java·开发语言·人工智能·spring·百度·langchain
微小冷9 小时前
在不同空间中展示数据(欧式、球面、庞加莱圆盘)
python·双曲空间·微分几何·geomstats·庞加莱圆盘·球面
felixking9 小时前
C++20 协程
开发语言·c++·协程
weixin_4316004410 小时前
Agent Workflow 学习向:Code 节点,比模板更强的变量加工
后端·python·学习·ai·
讲温控就好了10 小时前
从医疗影像到能源存储——芯片冷却温控技术的跨行业赋能
人工智能·python·能源