http://hadoop.aura.cn Python最难理解的知识点汇总 光环大数据Python培训机构
光环大数据Python培训了解到,几年前刚学Python的时候,看装饰器就觉得看九阴真经里面的怪文字,完全看不懂,确实装饰器是一个非常难以理解的概念。
1.什么是装饰器
网上有人是这么评价装饰器的,我觉得写的很有趣,比喻的很形象 每个人都有的内裤主要是用来遮羞,但是到了冬天它没法为我们防风御寒,肿木办?
我们想到的一个办法就是把内裤改造一下,让它变得更厚更长,这样一来,它不仅有遮羞功能,还能提供保暖,不过有个问题,这个内裤被我们改造成了长裤后,虽然还有遮羞功能,但本质上它不再是一条真正的内裤了。于是聪明的人们发明长裤
在不影响内裤的前提下,直接把长裤套在了内裤外面,这样内裤还是内裤,有了长裤后再也不冷了
装饰器就像我们这里说的长裤,在不影响内裤作用的前提下,给我们的身子提供了保暖的功效。
2.装饰器的前传4步曲
为什么讲装饰器要放在入门篇的末尾讲呢,因为这货太难了,里面有许多前提要懂。Python的函数相信大家都懂了,但是大家知不知道函数也是一种对象,可以像参数一样传递,我们看下面的例子吧:
1)函数也是对象
defmessage(word=’hello’): returnword.upper()+’!’ printmessage() >> HELLO!
光环大数据 http://hadoop.aura.cn
光环大数据--大数据培训&人工智能培训
http://hadoop.aura.cn my_message=message printmy_message >>
printmy_message() >> HELLO!
也就是说message可以赋值给另外一个变量 2)函数可以嵌套,定义在另外一个函数内部 defshow():
print‘Runinshow()’ defmessage(word=’hello’): returnword printmessage() show() >>
Runinshow() hello
message可以嵌套在show函数里面,调用show的时候也会跑下message函数
3)函数作为参数返回
一个函数还可以当做另外一个函数的返回值,不信看下面这个例子: >> hello„
4)函数作为参数传入
我们先创建一个getName函数,然后把这个函数当做参数传递给foo函数 >>
IwillcallthegetNamefunctionlater leo
光环大数据 http://hadoop.aura.cn
光环大数据--大数据培训&人工智能培训
http://hadoop.aura.cn 3.装饰器的真面目
1).经过前面几步,大家应该理解了函数可以作为参数传入,也可以当参数返回,而且还可以嵌套
装饰器其实就是对函数进行再次包装,它能够在不改变函数的前提下,增加函数的功能,可以在函数执行之前或者执行之后执行一段代码
a_stand_alone_function() >>
Iamastandalonefunction,don’tyoudaremodifyme
a_stand_alone_function_decorated=my_new_decorator(a_stand_alone_function)
a_stand_alone_function_decorated() >>
Beforethefunctionruns
Iamastandalonefunction,don’tyoudaremodifyme Afterthefunctionruns 2).使用装饰器
看这样简单吧,装饰器有一个语法糖@,直接@my_new_decorator就把上面一坨代码轻松化解了,这就是Pythonic的代码,简洁高效
其实相当于:
another_stand_alone_function=my_new_decorator(another_stand_alone_function)
4.为什么要使用装饰器
装饰器提供了一些和代码维护性和审美相关的优点。并且作为结构化工具,装饰器自然地促进了代码的封装,这减少了冗余性并使得未来维护和扩展变得更容易。
如果大家学过Django和Flask就会知道,web框架里面大量的使用装饰器进行代码的封装.我们下面看一个简单的例子:
我们有一个主题函数word()是输出一个字符串,我们有一个函数是把字符
光环大数据 http://hadoop.aura.cn
光环大数据--大数据培训&人工智能培训
http://hadoop.aura.cn 串变粗体,另外一个是变斜体。有了装饰器之后,我们可以非常灵活的组合,扩展函数的功能:
输出hello
有一点要注意,就是装饰器的顺序变了,结果是不一样的. @makeitalic @makebold defword(): return“hello” printword()
输出hello
以上就是我对Python装饰器的一些个人总结,希望对你们有帮助。
为什么大家选择光环大数据!
大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。
【报名方式、详情咨询】
光环大数据官方网站报名:http://hadoop.aura.cn/ 手机报名链接:http:// hadoop.aura.cn /mobile/
光环大数据 http://hadoop.aura.cn
因篇幅问题不能全部显示,请点此查看更多更全内容