Python函数--装饰器

本文深入解析Python装饰器的概念,探讨其如何在不修改原始代码的基础上为函数增添功能,遵循封闭开放原则,通过实例演示装饰器的语法糖用法,帮助读者理解装饰器的工作原理和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python函数–装饰器

装饰器的定义

给已有函数增加额外的功能的函数, 本质上和闭包类似
遵循封闭开放的代码原则

  • 封闭:尽量少的修改原来的代码
  • 开放:可以添加额外的功能
装饰器的特点
  • 1.装饰前的函数本身(最初被装饰的函数),其实被指向外层函数的参数
  • 2.装饰后的函数,其实调用的是内层函数
  • 3.装饰器是不会去更改原先函数的参数及返回值
装饰器的语法糖用法

语法糖的理解:
形象的理解为,加了一层糖衣包装,.但是本质不便还是一颗糖
函数还是函数,但是在函数外部进行了处理,从而达到装饰的作用

装饰器的使用
# 第一步闭包
# 第二步@语法糖
def set_fun(func):  # 这个就是传入要被装饰的函数名或者叫引用
	def call_fun():
		print("函数自身内存地址:",func)
		# 调用原先的函数
		func()
	return call_fun


@set_fun  # @set_fun ===> test = set_fun(test),这个就是语法糖的使用,前面是@后面跟上闭包的外层函数的名字即可,不加括号
def test():
	print("test")

test()

上面出来了神奇的一幕,竟然先执行了函数set_fun最后在执行了函数自身的代码.这个就是装饰器的作用,test是原本的业务代码,我们遵循封闭开放的原则,在不改动原先代码的时候,同时也添加了新的功能.

这个函数执行的顺序是可变的,有需求是需要先打印test函数输出,最后在调用语法糖的内容,只需要吧func()放在print前面即可,不管是否是在前在后都是可以的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值