本文将带领大家由浅入深的去窥探一下,这个装饰器到底是何方神圣,看完本篇,装饰器就再也不是难点了.

一、什么是装饰器
网上有人是这么评价装饰器的,我觉得写的很有趣,比喻的很形象
装饰器就像我们这里说的长裤,在不影响内裤作用的前提下,给我们的身子提供了保暖的功效
二、装饰器的前传4步曲
为什么讲装饰器要放在入门篇的末尾讲呢,因为这货太难了,里面有许多前提要懂。Python的函数相信大家都懂了,但是大家知不知道函数也是一种对象,可以像参数一样传递,我们看下面的例子吧:
1)函数也是对象
def message(word='hello'): return word.upper()+'!' print message() >> HELLO! my_message=message print my_message >> <function message at 0x000000000288E198> print my_message() >> HELLO!
也就是说message可以赋值给另外一个变量
2)函数可以嵌套,定义在另外一个函数内部
def show(): print 'Run in show()' def message(word='hello'): return word print message() show() >> Run in show() hello
message可以嵌套在show函数里面,调用show的时候也会跑下message函数
3)函数作为参数返回
一个函数还可以当做另外一个函数的返回值,不信看下面这个例子
>> <function lower at 0x00000000027DAD68> hello...
4)函数作为参数传入
我们先创建一个getName函数,然后把这个函数当做参数传递给foo函数
>> I will call the getName function later leo
三、装饰器的真面目
1).经过前面几步,大家应该理解了函数可以作为参数传入,也可以当参数返回,而且还可以嵌套
装饰器其实就是对函数进行再次包装,它能够在不改变函数的前提下,增加函数的功能,可以在函数执行之前或者执行之后执行一段代码
a_stand_alone_function() >> I am a stand alone function,don't you dare modify me a_stand_alone_function_decorated=my_new_decorator(a_stand_alone_function) a_stand_alone_function_decorated() >> Before the function runs I am a stand alone function,don't you dare modify me After the function runs
2).使用装饰器
看这样简单吧,装饰器有一个语法糖@,直接@my_new_decorator就把上面一坨代码轻松化解了,这就是Pythonic的代码,简洁高效
其实相当于:
another_stand_alone_function=my_new_decorator(another_stand_alone_function)
四、为什么要使用装饰器
装饰器提供了一些和代码维护性和审美相关的优点。并且作为结构化工具,装饰器自然地促进了代码的封装,这减少了冗余性并使得未来维护和扩展变得更容易。
如果大家学过Django和Flask就会知道,web框架里面大量的使用装饰器进行代码的封装.我们下面看一个简单的例子:
我们有一个主题函数word()是输出一个字符串,我们有一个函数是把字符串变粗体,另外一个是变斜体。有了装饰器之后,我们可以非常灵活的组合,扩展函数的功能:
>> <b><i>hello</i></b>
有一点要注意,就是装饰器的顺序变了,结果是不一样的.
@makeitalic @makebold def word(): return "hello" print word() >> <i><b>hello</b></i>
好了装饰器的入门,就讲到这里,若有什么不懂的,也可以留言跟我探讨交流。其实还有很多装饰器的高级用法,比如装饰器传参数,类的装饰器等等我们后面会讲解。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# python装饰器详解
# python
# 装饰器
# 参数
# python装饰器的作用
# Python 装饰器使用详解
# 深入浅出分析Python装饰器用法
# 老生常谈Python之装饰器、迭代器和生成器
# Python中装饰器兼容加括号和不加括号的写法详解
# Python的装饰器使用详解
# 带你了解python装饰器
# 深入理解Python中装饰器的用法
# 详解 Python中LEGB和闭包及装饰器
# 还可以
# 有一个
# 一个函数
# 前提下
# 另外一个
# 就会
# 都有
# 成了
# 好了
# 放在
# 也会
# 就像
# 有个
# 我觉得
# 大家都
# 这就是
# 还能
# 每个人
# 由浅入深
# 不懂
相关文章:
如何注册花生壳免费域名并搭建个人网站?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何确保FTP站点访问权限与数据传输安全?
网站制作价目表怎么做,珍爱网婚介费用多少?
建站之星如何实现五合一智能建站与营销推广?
网站制作模板下载什么软件,ppt模板免费下载网站?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
威客平台建站流程解析:高效搭建教程与设计优化方案
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
建站之星微信建站一键生成小程序+多端营销系统
股票网站制作软件,网上股票怎么开户?
音响网站制作视频教程,隆霸音响官方网站?
制作门户网站的参考文献在哪,小说网站怎么建立?
建站VPS能否同时实现高效与安全翻墙?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
公众号网站制作网页,微信公众号怎么制作?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
微信小程序 五星评分(包括半颗星评分)实例代码
深入理解Android中的xmlns:tools属性
建站之星好吗?新手能否轻松上手建站?
如何通过二级域名建站提升品牌影响力?
如何挑选高效建站主机与优质域名?
建站VPS选购需注意哪些关键参数?
如何快速搭建自助建站会员专属系统?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
已有域名和空间如何快速搭建网站?
个人摄影网站制作流程,摄影爱好者都去什么网站?
南平网站制作公司,2025年南平市事业单位报名时间?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何通过虚拟主机空间快速建站?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
网站网页制作专业公司,怎样制作自己的网页?
如何在阿里云通过域名搭建网站?
如何通过VPS建站无需域名直接访问?
如何在阿里云香港服务器快速搭建网站?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
如何用美橙互联一键搭建多站合一网站?
学校为何禁止电信移动建设网站?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
简单实现Android文件上传
如何用虚拟主机快速搭建网站?详细步骤解析
网站制作员失业,怎样查看自己网站的注册者?
大同网页,大同瑞慈医院官网?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
如何通过主机屋免费建站教程十分钟搭建网站?
建站主机选哪家性价比最高?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
电脑免费海报制作网站推荐,招聘海报哪个网站多?
*请认真填写需求信息,我们会在24小时内与您取得联系。