Python装饰器:给你的函数穿上“外套”

简介: Python装饰器:给你的函数穿上“外套”

Python装饰器:给你的函数穿上“外套”

想象你有一个普通的函数,就像一件T恤。它能完成基本任务,但有时你需要添加额外功能,比如日志记录、权限检查或性能监测,而不改动原来的T恤。这时,Python的装饰器就像一件外套,可以随时穿上或脱下。

装饰器本质上是一个高阶函数,它接收一个函数并返回一个新的函数。穿上外套后,每次调用函数时,外套会先执行一些额外代码,再让里面的函数干活。

举个例子,你想记录每个函数的执行时间。可以定义一个计时装饰器:

import time

def timer(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(f"{func.__name__} 耗时 {end-start:.2f}秒")
        return result
    return wrapper

@timer
def slow_function():
    time.sleep(1)

slow_function()  # 输出:slow_function 耗时 1.00秒

这里,@timer就像给slow_function穿上了一件计时外套,原函数无需任何修改。

装饰器让代码更简洁、可复用,遵循了“开放封闭原则”。下次你需要给函数加功能时,不妨试试这件神奇的“外套”吧!

相关文章
|
1月前
|
设计模式 缓存 监控
Python装饰器:优雅的代码增强术
Python装饰器:优雅的代码增强术
279 111
|
1月前
|
架构师 编译器 PHP
PHP 8:让代码更优雅的进化
PHP 8:让代码更优雅的进化
202 127
|
1月前
|
缓存 监控 开发者
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
211 115
|
1月前
|
缓存 监控 大数据
PHP性能优化小贴士:让你的网站飞起来
PHP性能优化小贴士:让你的网站飞起来
190 128
|
1月前
|
SQL 人工智能 监控
PHP:从脚本小子到Web开发的可靠伙伴
PHP:从脚本小子到Web开发的可靠伙伴
172 133
|
1月前
|
SQL 安全 5G
PHP:服务器端的“厨房魔法师”
PHP:服务器端的“厨房魔法师”
195 126
|
1月前
|
PHP 数据库
PHP函数式编程:像搭积木一样写代码
PHP函数式编程:像搭积木一样写代码
186 124
|
前端开发
前端学习笔记202307学习笔记第六十一天-react知识点串讲之20
前端学习笔记202307学习笔记第六十一天-react知识点串讲之20
239 121
|
存储 资源调度 容灾
2020双11,阿里巴巴集团数万数据库系统全面上云揭秘
2020年天猫双十一成交额突破4982亿,在双十一走过12个年头之际,我们的订单创建峰值达到58.3万笔/秒,再次刷新全球在线交易系统的记录。历年双十一都是对技术人的一次大考,峰值的丝般润滑体验是大家一致的追求,而数据库可谓关键。多年双十一大促“磨练”出阿里巴巴DBA一整套技能来应对大考,比方说全链路压测、容灾预案、实时限流等,同时阿里的数据库产品能力也大幅提升,如智能化的企业级MySQL内核AliSQL,自研PolarDB引擎等,这些硬核能力是阿里巴巴集团数据库团队应对大考的底气。
10169 113
2020双11,阿里巴巴集团数万数据库系统全面上云揭秘
|
存储 SQL 缓存
拜托,别再问我什么是B+树 了
每当我们执行某个 SQL 发现很慢时,都会下意识地反应是否加了索引,那么大家是否有想过加了索引为啥会使数据查找更快呢,索引的底层一般又是用什么结构存储的呢,相信大家看了标题已经有答案了,没错!B+树!那么它相对于一般的链表,哈希等有何不同,为何多数存储引擎都选择使用它呢,今天我就来揭开 B+ 树的面纱!
1205 114
拜托,别再问我什么是B+树 了