

我们在做Python开发或学习时,一定遇到过这样的需求:想给函数加新功能(比如计时、日志),但又不想修改函数本身的代码,也不想重复写相同逻辑。这时候,Python装饰器就该登场了,它就像给函数“穿衣服”,不用动衣服里面的“内核”,就能轻松给函数增添新能力,轻松实现代码复用。其核心能力就是:在不修改原函数代码、不改变原函数调用方式的前提下,为原函数添加额外功能。

一、装饰器底层通用语法
decorator就是一个装饰器,它装饰的就是函数func(以函数名为入参),并返回一个内部函数inner;在inner函数内部,我们可以执行一些额外的操作,然后调用原始函数func,并返回其结果。
def decorator(func):def inner(参数):# 添加功能func(参数)# 添加功能return inner
二、闭包语法实现装饰器
装饰器的底层就是通过闭包来实现的,下面这个小demo演示的就是对数值开根号,对于数值-9,我们需要先取绝对值,可以通过装饰器实现这一功能,从而不用动原函数func。
from math import sqrtdef func(x):"""开根号"""return sqrt(x)# 装饰器函数decorator装饰函数funcdef decorator(f):def inner(x):x = abs(x) # 求x的绝对值return f(x)return innerfunc = decorator(func)print(func(-9))
三、简便形式:语法糖(如@decorator)实现装饰器
from math import sqrt# 装饰器decorator,装饰函数funcdef decorator(f):# 内部函数inner的入参与被装饰函数func入参一致def inner(x):x = abs(x) # 求x的绝对值return f(x)return inner@decorator # 语法糖形式,只需要明白装饰的是func函数,也就是入参是funcdef func(x):"""开根号"""return sqrt(x)

总结:今日我们学习了Python基础篇-基础装饰器语法。Python装饰器本质是用于增强函数功能的Python函数,核心优势的是不修改原函数代码、不改变调用方式,实现代码复用与解耦。其基础语法通过闭包、@装饰器名简化调用。使用过程中需避开未返回内部函数、未调用原函数等细节错误点,学会装饰器是Python从入门到进阶的关键一步。在Python基础篇,后续我们将持续学习Python基础知识,介绍各种算法,祝每一位study er学习愉快。

