python装饰器
来源:互联网 发布:网络很火丑男图片 编辑:程序博客网 时间:2024/06/07 07:23
def Fun(func):
def fun1():
print 'hello' #此处可以加一些条件判断之类的代码,用来限制fun2的执行
return func #标记一
return fun1 #作为装饰器,此处调用fun1()不需要加'( )',就可以运行,如果加了'( )',则是将'( )'传递给了fun1的返回值func
@Fun
def fun2():
print 'world'
此时调用fun2应为
fun2()() 这样才会运行,第二个'()',是用来传递给fun1的返回值func的,如果不加,则不会执行fun2内的代码
我们知道,装饰器的作用是当调用fun2时,既代码:fun2() 此时先将fun2传入到Fun中去,既执行代码:Fun(fun2) 此时fun1的返回值并没有得到‘( )’故不会执行fun2,(如果没哟加装装饰器,要执行相同装饰器效果可以写代码:Fun(fun2)()())
为了简化可以将标志一处代码改为:return func() 避免多加'( )'的麻烦
如果被装饰的函数有参数:
def Fun(func):
#*args表示元祖参数,**kargs表示字典参数
def fun1(*args,**kargs):
printf('hello world')
return func(*args,**kargs)
return fun1
装饰器带参数
def Fun(arg): #装饰器此时的参数并不是用来接收函数的,而是接收装饰器的变量
def fun2(func): #第一层 接受函数
def fun3():
print 'hello'
print arg
func() #注意此时并无返回值
return fun3 #虽然fun3无返回值,但仍然要return fun3
return fun2 #返回fun2
@Fun('test')
def fun1():
print 'world'
fun1()
结果为:
hello
test
world
- python装饰器装饰类
- [python]python装饰器
- Python装饰器学习
- Python装饰器
- python 装饰器
- Python装饰器
- python 装饰器 应用
- python 装饰器2
- Python装饰器学习
- python装饰器
- python装饰器
- python 装饰器入门
- python装饰器
- python装饰器
- python 装饰器'@'
- python装饰器
- Python装饰器详解
- python 装饰器
- 可信计算机的研究与发展
- Jquery表单插件ajaxForm用法详解
- HDU1078(树形DP+DFS)
- 什么是sap 统驭科目(reconciliation account)
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- python装饰器
- 张焕国
- 沈昌祥
- WIFI、3G、2G网络连接判断深入分析
- VS2010中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法
- Linux下Web服务器应用之基础简介
- 北大校赛
- 关于数据库方向的顶级国际会议
- python 获取本机ip地址的两种实现方法