文档章节

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

 原创小博客
发布于 07/22 23:37
字数 808
阅读 6
收藏 1

编程学习笔记之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()
这里需要注意的是,使用语法糖后,装饰器的代码会在被装饰函数之前执行,这是装饰器的执行时间问题。

© 著作权归作者所有

共有 人打赏支持
粉丝 5
博文 120
码字总数 144293
作品 0
宜昌
程序员必备,快速学习 Python 的全套14张思维导图(附高清版下载)

后台回复关键词 思维导图 可获取本文中的高清思维导图(PDF版) ML & AI∣一个有用的公众号 长按,识别二维码,加关注 获取更多精彩文章

micf435p6d221ssdld2
05/23
0
0
一个月入门Python爬虫,快速获取大规模数据

数据是创造和决策的原材料,高质量的数据都价值不菲。而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣、知乎:爬取优质答案,筛选出各话题下热门内容,探索...

Python开发者
04/25
0
0
Python学习小白必备书籍以及源码下载、代码求助三大网站

Python小白开发入门必备的3本书籍,除了书籍小U还整理了5个程序员们常用的资源网站。 入门书籍一 《Python for data analysis》 这本书涵盖了ipython notebook、Numpy、Scipy和Pandas包的使用...

柯西带你学编程
05/30
0
0
5本必读Python入门书籍,你都看过吗?(附福利)

今天技术学派为大家准备了5本Python入门书籍,除了书籍小编还整理了3个常用的资源网站分享给大家。 1.Python基础教程 《Python基础教程》是经典的Python入门教程书籍,本书层次鲜明,结构严谨...

Python燕大侠
06/07
0
0
快速学习 Python 的全套 14 张思维导图

源 / Python学习联盟 本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库)。 思维导图 总览 14张思维导图 第1张图 基础知识图一包括了基本规则、Python语言特点、计算机语言、...

程序员之家_
10/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在Java中生成比特币钱包地址

让我们通过学习比特币(Bitcoin)如何实施该技术的各个方面来工作,好吗?该技术包括以下几个方面: 比特币地址bitcoin address是用来发送和接收比特币的。 交易transaction是比特币从一个地...

geek12345
28分钟前
3
0
面试必备Linux基础知识

学习Linux之前,我们先来简单的认识一下操作系统。 一 从认识操作系统开始 1.1 操作系统简介 我通过以下四点介绍什么操作系统: 操作系统(Operation System,简称OS)是管理计算机硬件与软件...

小小明童鞋
29分钟前
7
0
SpringBoot基础教程3-1-3 Quartz定时任务单点持久化

1 概述 实际项目中,复杂的定时任务都会结合持久化,动态改变定时任务状态,本文将介绍基于Quartz的定时任务单点持久化方式,通过RESTful风格,演示定时任务的CRUD,最后使用Swagger测试。 ...

Mkeeper
45分钟前
14
0
Android入门—文件目录解析

AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录。我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息。但是对于这个文件,我...

haoyuehong
48分钟前
8
0
IDEA中Maven打包时如何跳过测试

方法1:直接使用IDEA提供的方式 Maven命令栏的工具栏有下图中的图标,上面就写着 Skip Tests 按下图标后,如下图,test就不可用了 直接使用package命令即可。 方法2:自己编辑maven命令 进入...

karma123
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部