关于decorator 的理解
来源:互联网 发布:画平面图软件 编辑:程序博客网 时间:2024/05/29 18:59
今天对于python学习到了decorator这一块的地方,以及前面的的返回函数、匿名函数等等。
自学python从11.19日开始算起到现在快要满一个月了。记录一下自己学的东西,尤其是现在我还没有弄明白的地方,因为大脑存在着遗忘的特点我本着能记录绝对不偷懒,每个周末开始对自己的这一周的学习进行一次回顾复习与总结。这可能是我刚刚开始对自己负责的地方,我相信在我现实中的朋友们、亦或者是同事是不会浏览这个类别的博客的。因此我可以做一个自我,来学的我所喜欢的东西。
入门python我所遇到的问题有:
1.相对于视频,我个人对于文字更加喜欢,可以进行反复的推敲。速度也可以自我把控,然而现在所阅读的python入门是廖雪峰(廖大大)入门教程,对于一个在大学中仅仅在大一的时候学过VB的人来说,有些地方还是不太会。
递归——这一块的函数太过于抽象画,现在还没有搞懂,计划将这个问题滞后放置于阅读完一遍python教程后再来看它(汉诺塔)
高阶函数——这一类的高级函数的理解不是很透彻,虽然过了一遍但是在自己写代码的时候仍然不太会运用,里面包含着匿名函数、map|reduce、filter、sorted、装饰函数(decorator)、返回函数以及偏函数
今天在看装饰函数遇到的问题有:
import functoolsdef log(text='call'): def decorator(func): @functools.wraps(func) def wrapper (*args,**kw): print(text,'begin') func(*args,**kw) print(text,'end') return return wrapper return decorator@log()def now(): print('5555')print(now())@log(text='sdf')def f(): print('788')print(f())
对于上面的代码有一行还没有读懂func(*args,**kw)
我暂时是这么理解的:func
是装饰函数(decorator)的变量(*args,**kw)
是func
的变量。装饰函数的性质是
假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。本质上Decorator是一个高阶的返回函数
**我们来剖析上面的语句,首先执行log(‘execute’),返回的是decorator函数,再调用返回的函数,参数是now函数,返回值最终是wrapper函数。
以上两种decorator的定义都没有问题,但还差最后一步。因为我们讲了函数也是对象,它有name等属性,但你去看经过decorator装饰之后的函数,它们的name已经从原来的’now’变成了’wrapper’:——廖雪峰python3教程 **
- 关于decorator 的理解
- python decorator的理解
- Decorator模式的一些理解~
- 使用babel深入理解es7的decorator
- 软考复习之Decorator模式的理解
- python decorator知识理解, 主要内容来自廖雪峰的官方网站
- 从坷里化理解Py带参数的decorator
- 对于python中的self,cls,decorator的理解
- python 关于decorator
- 关于python decorator找到的一篇比较好的文章
- 关于python 的@操作符 Decorator 的用法
- 关于python 的@操作符 Decorator 的用法
- 关于Python 的@操作符 Decorator 的用法
- 关于python 的@操作符 (Decorator) 的用法
- 一个关于装饰器(decorator)的题目
- 简单Java代码实例助你通俗易懂的理解什么是装饰(者)设计模式 (Decorator)
- Decorator 解决的问题
- Python:decorator的使用
- CSS揭秘--笔记--扩大可点击区域
- sdut oj3-5 学生成绩统计
- [Coursera机器学习]Support Vector Machines WEEK7编程作业
- Python+opencv3.0配置
- java细节,防止内存泄露
- 关于decorator 的理解
- 线性筛选求素数
- sass认识
- JAVA多线程售票问题
- JAVA WEB 开发环境的的搭建
- 给View添加特定数量的Border
- React Native实现一个自定义模块
- Android开发——官方推荐使用DialogFragment替换AlertDialog
- 润乾报表call函数在单元格中的使用