Python装饰器模式学习总结

本文探讨Python装饰器模式,涉及作用域、闭包和装饰器的基本概念。装饰器通过增强函数功能来提升代码效率,例如实现日志记录。通过实例解析装饰器的使用方法,总结其核心在于装饰与被装饰对象的结合。

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

装饰器模式,重点在于装饰。装饰的核心仍旧是被装饰对象。

类比于Java编程的时候的包装模式,是同样的道理。虽然概念上稍有不同但是原理上还是比较相近的。下面我就来谈一谈我对Python的装饰器的学习的一点心得吧。


关于作用域

Python作用域 体现在LEGB中:

  • L:local 函数内部
  • E: enclosing 函数内部和内置函数之间
  • G:global 全局性质,有命名空间的限制
  • B:build-in 内置函数,由python解释器管理

学过编程的人一眼就可以看得出来大致是什么意思,所以这里不再叙述。


关于闭包

关键在于理解Python中闭包的概念。说白了,闭包就是函数里面又定义了函数,这就是闭包了。(呵呵,断章取义一下。可能说法不恰当)。如下:

def func1():
	print 'func1 is running'
	def in_func1():
		print 'in_func1 is running'
		return in_func1
	print 'over'

简单的一个闭包的实现,就差不多是这个样子的。我们需要注意的就是要将内部函数当成一个对象来返回(Python中函数其实就是一个对象,我们可以通过type来进行验证)。
这段代码执行的流程是先执行func1,然后执行func2,并且将func2作为一个属性返回给func1.这样我们可以再次的得到func2的内容。这就是闭包!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰 戈 尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值