pyhton 装饰器 执行顺序
来源:互联网 发布:企业数据库系统有哪些 编辑:程序博客网 时间:2024/05/22 17:35
python装饰器
请问下面的代码会输出什么的内容 ?
#-*-coding=utf-8-*-import loggingdef get_parameter(func): print "IN GET PARAMETER" def new_func(): print "inside new func" return func() print "END GET PARAMETER" return new_func@get_parameterdef show_function(): print "SHOW Function" return "HELLO"# a=show_function#a()#get_parameter()#a=show_function()#print a#演示2个装饰器同时使用def add_br(func): #print '<br>', def wrapper(): return '<br>'+func()+'</br>' return wrapperdef add_header(func): def wrapper(): return "<header>" +func()+ '</header>' return wrapper@add_header@add_brdef sayHelloWorld(): return "Hello world!"def deco1(func): def wrapper(arg1,arg2): print "Start" func(arg1,arg2) print "End" return wrapper@deco1def args_deco_test(x1,x2): print "first args is %s . Second args is %s." %(x1,x2)def multi_args(func): def wrapper(*args,**kwargs): print "start" func(*args,**kwargs) print "end" return wrapper@multi_argsdef deco_multi_arg(*args,**kwargs): for i in args: print "args : %s" %i for k in kwargs: print "key=" ,k print 'value=',kwargs[k] print "end in main"def deco_rocky(name): print "deco_rocky: ",name def sub_function(func): print "sub function" def wrapper(args1,args2): print "in wrapper" func(args1,args2) print "end of wrapper" return wrapper return sub_function@deco_rocky("Dinesh")def foo_focky(arg1,arg2): print "In foo_rocky" print "arg1: ",arg1 print "arg2: ",arg2 print "End of foo_rocky"def main(): #print sayHelloWorld() print "Morning" #args_deco_test('one','two') #deco_multi_arg('args1','args2','args3','args4',name="Rocky",sex="Female") #foo_focky('HHH','Mars')if __name__ == "__main__": main()
答案:
IN GET PARAMETER
END GET PARAMETER
deco_rocky: Dinesh
Morning
为什么不执行任何语句,却把装饰器的部分函数给执行了呢?
只要因为装饰器的@语法糖
@get_parameter
这一句等效于f=get_parameter(show_function)
这一句会执行get_parameter的里面的除wrapper的语句
而当 执行f()
的时候,就会执行wrapper里面的函数。
阅读全文
0 0
- pyhton 装饰器 执行顺序
- python装饰器执行顺序
- python 多重装饰器执行顺序
- 多个装饰器的执行顺序
- 探究多个装饰器执行顺序
- 探究多个装饰器执行顺序
- 函数多装饰器执行顺序解析(python)
- Python装饰器探究——多个装饰器执行顺序
- Pyhton执行shell
- 拦截器执行顺序
- Python多个装饰器的顺序
- pyhton进阶之多线程的同步执行
- python中装饰器的执行细节
- python装饰器的执行过程
- 只执行一次的装饰器
- java拦截器执行顺序
- Struts2拦截器执行顺序
- java 构建器执行顺序
- seo知虎告诉您seo日常工作的重点是什么?
- Makefile 管理工具 — Automake and Autoconf
- Lua 基础学习1-类型与值
- 链表翻转
- 深圳市奔凯安全技术股份有限公司面试题之一:关于数据库查询,根据年份查询每个季度的销售额
- pyhton 装饰器 执行顺序
- java 实现3个线程 依次打印ABC,并且循环10次
- vue-组件
- 个人简介
- 重建二叉树
- 【机器学习 Opencv】Opencv之Bag of Word模型(二)
- [LeetCode] 137. Single Number II
- 安装配置MySQL5.7.17版本
- Unreal 4 Layered material 分层材质