菜鸟初学python 装饰器
来源:互联网 发布:在哪里买域名比较好 编辑:程序博客网 时间:2024/06/07 03:50
最近一直在学python 在廖雪峰老师的网站上进行学习 这里给出一个网址 给大家参考:
点击打开链接
对于装饰器这一节看了很久 对于之前学习从未出现的新语法有所好奇 这里总结几点并对廖老师出的题目做一个个人总结
首先聊一聊作为一个菜鸟对装饰器的理解:
利用闭包 将本身的func函数放在一个decorator函数里执行 这个函数传入你要在本身func函数前后添加的语句 同时在这个函数内部将func函数执行
此时就由wrapper函数来起作用 它接受来自本身func函数可传入的任何参数 返回func函数执行的结果 就是执行了一遍func函数
调用过程就是一层一层剥开一般不断返回函数然后调用这个返回的函数直到执行到最内层
三层嵌套同理 只是多一层函数以传入要加入的参数
-----------------------以上为一点个人理解,下面是解题代码
import functoolsdef log(text): def decorator(func): functools.wraps(func) def wrapper(*args,**kw): print('%s : %s' % (text,func.__name__)) return func(*args,**kw) return wrapper if isinstance(text,str): return decorator func=text text='execute' return decorator(func)@logdef now(): print('2015-3-12')@log('haha')def then(): print('2015-1-11')now()then()最开始做这道题的时候,想到的最基本的解决方法 给text赋一个初始值 然而没有起作用 报错 原因自己弄个清楚 有大神的话跪求指点
后来就选择从函数结构入手 个人理解是 就是如果执行的时候log函数没有参数的话 它就会将函数作为text参数传入 从而报错少一个func参数
于是 在最后函数返回时做一个判断 将参数调回预期情况 返回时之所以要写成decorator(func)是因为 开始没有参数传入的decorator函数不是我们预期的
至于具体过程 我不是很清楚 菜鸟查了资料耶不懂 幸运的话跪求有大神指点TT
0 0
- 菜鸟初学python 装饰器
- 初学python--认识装饰器
- python初学 类以及装饰
- 菜鸟学python(05)——装饰器
- python初学笔记-类和装饰
- 菜鸟学Python(10):初学JSON
- 菜鸟学Python(10):初学JSON
- 初学python——菜鸟到入门
- python装饰器装饰类
- [python]python装饰器
- 我的小记_初学python之装饰器的实现
- Python之美[从菜鸟到高手]--装饰器之使用情景分析
- Python之美[从菜鸟到高手]--装饰器之使用情景分析
- 菜鸟初学
- 菜鸟学设计模式----装饰器模式
- 菜鸟柳--23种设计模式初学记录笔记(二)装饰者设计模式
- 菜鸟柳--23种设计模式初学记录笔记(二)装饰者设计模式
- Python装饰器学习
- 关于NiftyDialogEffects Dialog弹出动画第二次进入弹出dialog闪退Bug
- 【POI 12】【Double-row】
- UML类图
- 越狱检测/越狱检测绕过
- JavaScript学习笔记二十八:Canvas
- 菜鸟初学python 装饰器
- Java map遍历
- Android OkHttp
- java重写和重载
- Matlab与C/C++混合编程接口及应用
- 机器学习经典书籍
- windows内网渗透的一些笔记
- 手把手教你一小时学会搭建网站
- jQuery过滤器