对Python 函数修饰符的一些理解
2017-07-04 23:33
357 查看
函数修饰符,这个东西在Python中困扰了我很久,网上查的资料也是乱七八糟的,今天特意花了点时间整理了一下。写这篇文章的目的,1.为了让自己留下更为深刻的印象;2.给对函数修饰符不太了解的学者一些借鉴吧
我把函数修饰符分为两类,一类是不带参的函数修饰符。看代码
这里说的不带参,表示函数修饰符不带除了要修饰的函数之外的参数。这个修饰的结果正如注释所说: no_arg_func=de_no_arg(no_arg_func)
另一类是带参的函数修饰符
注意:在此类中,修饰函数本身是不带有 被修饰函数 参数的。
也如注释所说,修饰结果为:
总结一下:
记住这两个东西就够用了:
1.无参修饰:no_arg_func=de_no_arg(no_arg_func)
2.带参修饰:tmpfunc=de_has_arg(1,2,3,4,5,5,a=1,b=2) has_arg_func=tmpfunc(has_arg_func)
我把函数修饰符分为两类,一类是不带参的函数修饰符。看代码
def de_no_arg(fn): def check(arg): print "---do some other thing---" fn(arg) return check @de_no_arg def no_arg_func(arg): # 此修饰相当于 no_arg_func=de_no_arg(no_arg_func) print "---the origin func is doing something---" no_arg_func("param")
这里说的不带参,表示函数修饰符不带除了要修饰的函数之外的参数。这个修饰的结果正如注释所说: no_arg_func=de_no_arg(no_arg_func)
另一类是带参的函数修饰符
def de_has_arg(arg1,arg2,*arg3,**arg4): def temp(arg1,arg2,arg3,arg4,func): print "__do some other thing__" print "__print the argments__:",arg1,arg2,arg3,arg4 return func return partial(temp,arg1,arg2,arg3,arg4) # 此修饰相当于 tmpfunc=de_has_arg(1,2,3,4,5,5,a=1,b=2) # has_arg_func=tmpfunc(has_arg_func) @de_has_arg(1,2,3,4,5,5,a=1,b=2) def has_arg_func(): print "__the origin func is doing something__" has_arg_func()
注意:在此类中,修饰函数本身是不带有 被修饰函数 参数的。
也如注释所说,修饰结果为:
tmpfunc=de_has_arg(1,2,3,4,5,5,a=1,b=2) has_arg_func=tmpfunc(has_arg_func)
总结一下:
记住这两个东西就够用了:
1.无参修饰:no_arg_func=de_no_arg(no_arg_func)
2.带参修饰:tmpfunc=de_has_arg(1,2,3,4,5,5,a=1,b=2) has_arg_func=tmpfunc(has_arg_func)
相关文章推荐
- Python函数修饰符的初步理解
- 对python 函数的一些理解
- [python-chinese] 我对字符编码的一些理解
- [原创]对linux fork工作模式(python版)的一些理解
- 子函数中为调用者分配内存的一些理解
- Python3.3 学习笔记4 - 函数 - 内置和其他一些函数
- 关于函数返回值的一些理解
- python中'@'符号用作函数修饰符
- python中对象以及一些函数的应用
- Python的一些字符串内建函数
- bullet 中 btCollisionObject 的一些函数的理解
- Python中的函数修饰符
- 关于函数指针的一些理解与其他相关内容的联想
- 对java中equals和hashCode函数的一些理解
- 对java中equals和hashCode函数的一些理解
- python的一些函数用法记录
- 理解python的修饰符@
- Python中的一些函数
- Python 一些特别函数 __getitem__ __getattr__
- python学习笔记: 一些有用的文件操作函数