Python 装饰器实战指南:从入门到精通的 10 个实用技巧

Python 装饰器实战指南

一、什么是装饰器

装饰器是 Python 中强大的工具,允许在不修改原函数代码的情况下添加新功能。

二、基础示例

def my_decorator(func):

def wrapper():

print("执行前")

func()

print("执行后")

return wrapper

@my_decorator

def say_hello():

print("Hello!")

三、计时装饰器

import time

from functools import wraps

def timer(func):

@wraps(func)

def wrapper(*args, **kwargs):

start = time.time()

result = func(*args, **kwargs)

end = time.time()

print(f"执行时间:{end-start:.4f}秒")

return result

return wrapper

四、缓存装饰器

from functools import lru_cache

@lru_cache(maxsize=128)

def fibonacci(n):

if n < 2:

return n

return fibonacci(n-1) + fibonacci(n-2)

五、总结

装饰器让代码更简洁可维护,建议使用@wraps 保留元信息。

相关推荐
整点薯条7782 小时前
用 Python 给家里做一次噪音频谱审计:程序员的声学工程实践(含完整源码)
开发语言·python·噪音控制
子非吾喵2 小时前
本地部署AI大模型:Ollama + Qwen3 完整指南,用Python打造智能聊天助手
开发语言·人工智能·python
2402_854808372 小时前
CSS如何实现根据滚动进度触发的过渡效果_配合JS修改类名触发transition
jvm·数据库·python
2501_914245932 小时前
如何配置MySQL用户的密码复杂度要求_结合phpMyAdmin与密码校验插件
jvm·数据库·python
m0_640309302 小时前
c++如何创建一个指定大小的稀疏文件_Windows下FSCTL_SET_SPARSE【实战】
jvm·数据库·python
m0_746752302 小时前
C#怎么使用required必需成员 C#required关键字怎么用如何强制构造对象时必须赋值属性【语法】
jvm·数据库·python
m0_747854522 小时前
PHP 中 OR 运算符逻辑误用的典型陷阱与正确写法
jvm·数据库·python
Shorasul2 小时前
JavaScript中Symbol类型的唯一性特征与创建规范
jvm·数据库·python
解救女汉子2 小时前
Bootstrap Gutters间距用法 Bootstrap 5中g-,gx-,gy--如何使用
jvm·数据库·python