编程学习笔记之python深入之装饰器案例及说明文档[图]

本文介绍Python装饰器的概念及其应用场景,通过实例演示如何在不修改原始函数的基础上增加登录验证功能。

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

编程学习笔记之python深入之装饰器案例及说明文档[图]
装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰,所以称为装饰器。装饰器的主要依据是闭包,这里用一个案例来说明装饰器的作用:
(1)客户需要写一个通过选择不同按钮来实现发说说和发图片操作的程序,基本框架如下:

编程学习笔记之python深入之装饰器案例及说明文档[图]


# 函数功能
# 发说说函数
def fss():
print("发说说")
# 发图片函数
def ftp():
print("发图片")
# 业务执行代码
buttom = 2
if buttom == 1:
fss()
else:
ftp()
(2)这个时候,客户发来需求说在发说说或发图片之前要用户登录,则在框架中要加入用户登录功能。而在对业务代码进行修改时有三个需要遵循的规则:1.不要随意在业务执行代码中修改代码,因为代码的应用场景很多,如果在业务执行代码中修改代码,那么每个场景中都要进行修改,工作量大;2.写好的函数功能不要随意增删,这样会违背“单一职责”原则,即一个函数只实现一个功能;3.不要随意增加新的函数,这样会导致要在业务执行代码中写入该函数,违背第一条规则。根据以上三条规则,将上述代码修改如下:
# 函数功能
# 装饰器
def checkLogin(func):
def inner():
print("请登录...")
func()
return inner
# 发说说函数
def fss():
print("发说说")
fss = checkLogin(fss)
# 发图片函数
def ftp():
print("发图片")
ftp = checkLogin(ftp)
# 业务执行代码
buttom = 2
if buttom == 1:
fss()
else:
ftp()

即加入装饰器,其中利用函数名和变量名性质相同,将装饰器返回的函数重新赋值给相应的函数名,欧也妮葛朗台读书笔记(http://www.simayi.net/dushubiji/6609.html)摘抄好词好句及感悟赏析,从而避免修改业务执行代码。

(3)python给出一种装饰器的简化形式,即语法糖。这里装饰器的语法糖即@装饰器名,并放在要装饰的函数前即可,最终代码如下:
# 函数功能
# 装饰器
def checkLogin(func):
def inner():
print("请登录...")
func()
return inner
# 发说说函数
@checkLogin
def fss():
print("发说说")
# 发图片函数
@checkLogin
def ftp():
print("发图片")
# 业务执行代码
buttom = 2
if buttom == 1:
fss()
else:
ftp()
这里需要注意的是,使用语法糖后,装饰器的代码会在被装饰函数之前执行,这是装饰器的执行时间问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值