Python装饰器
在Python中,装饰器是一个特殊的函数,可以将其他函数包装在装饰器函数中,并且将被包装的函数作为参数传递给装饰器函数。
使用装饰器的好处是可以自动在被包装的函数前后执行一些额外的代码,比如在函数执行前后打印日志,或者在函数执行前后计算函数执行时间等。
下面我们通过一个简单的例子来学习如何使用装饰器。
假设我们要对一个函数进行包装,在函数执行前后分别打印一个日志。
下面是我们要包装的函数:
def func():
print("func() is running")
如果我们直接调用这个函数,将打印下面的日志:
func()
func() is running
下面是我们要使用的装饰器函数:
def decorator(func):
def wrapper():
print("wrapper() is running")
func()
print("wrapper() is done")
return wrapper
使用装饰器函数包装我们要调用的函数,只需要在函数名前加上@符号和装饰器函数名,如下所示:
@decorator
def func():
print("func() is running")
调用函数func()将自动执行decorator函数,decorator函数将func函数作为参数传递给wrapper函数,最后将wrapper函数的返回值赋给func函数。
因此,调用func()函数实际上是调用wrapper()函数。
调用wrapper()函数将打印下面的日志:
func()
wrapper() is running
func() is running
wrapper() is done
从打印的日志中可以看出,在func()函数执行前后分别打印了wrapper()函数的日志。
使用装饰器可以在不修改函数的前提下,对函数进行包装,达到额外增加功能的目的。
顺便介绍一下我的另一篇专栏, 《100天精通Python - 快速入门到黑科技》专栏,是由 CSDN 内容合伙人丨全站排名 Top 4 的硬核博主 不吃西红柿 倾力打造。 基础知识篇以理论知识为主,旨在帮助没有语言基础的小伙伴,学习我整理成体系的精华知识,快速入门构建起知识框架;黑科技应用篇以实战为主,包括办公效率小工具、爬虫、数据分析、机器学习、计算机视觉、自然语言处理、数据可视化等等,让你会用一段简单的Python程序,自动化解决工作和生活中的问题,甚至成为红客。
订阅福利:原价299,限时1折订阅专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导/学习方法指引),群里大佬可以抱团取暖(大厂/外企内推机会)
订阅福利:简历指导、招聘内推、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
专栏地址: 点击《100天精通Python - 快速入门到黑科技》