python装饰器
2016-02-12 11:32
686 查看
def home(name): print('你又来啦') print(name) def login(func): def inner(name): print('pass') return func(name) return inner def login1(a,b): def inner(name): print('diyipass') def wa(*name1): a(*name1) b(*name1) #name(name1) return name(*name1) return wa return inner #def login(func): # print('pass') # return func #@login#在不调用任何函数的情况下,这条语句依然会被执行 #@login def DIANNAO(name): print('你还来') print(name) @login1(DIANNAO,home) def TV(name): print('你来啦') return 4 #@login tv=login(TV)#装饰器里面只有一层,直接将功能函数赋给装饰器, #让装饰器去执行 print(tv) ''' 传递进去的就是一个内存地址 ''' tv('alex') p=tv('alex') print(p) m=login(DIANNAO) m('mei') o=TV('alex') print(o) ''' 个人总结,装饰器就是包含,和顺序执行 有些强大的装饰器框架 再下次调用的时候只需要写函数就可以啦 写一个装饰器的成本比较高。 要调用的时候可以直接调用函数 ''' print('邪恶的------') t=login1(DIANNAO,home) #返回的inner的内存地址,这个时候没有实例化 #只是将函数赋给longi1,DIANNAO,home分别表示连个函数 print(t)#打印出inner函数的内存地址 p=t(tv)#这个时候也没有进行实例化,将功能函数赋值给装饰器 print(p)#打印出要执行函数的内存地址 m=p('alex')#进行实例化 print('m',m)#打印出返回结果,这个返回结果建议使用 #return name(*name1),这种模式,这样可以接收功能函数的返回值 print('你好') TV('alex') #直接利用装饰器进行的功能函数的实例化
相关文章推荐
- Python字符串的修改以及传参
- Python list 操作
- 成员变量,局部变量,栈,堆的关系
- 【Python】python对象与json相互转换
- NumPy的详细教程
- NumPy学习笔记(三)
- NumPy学习笔记(二)
- NumPy学习笔记(一)
- 提升Python编程效率的10点建议
- Python验证IP合法性
- python创建迅雷批量任务
- Python模块之SciPy
- Python模块之NumPy
- python黑魔法之参数传递
- 常用python编程模板汇总
- 一步步解析Python斗牛游戏的概率
- 理解Python垃圾回收机制
- 教大家使用Python SqlAlchemy
- wxpython怎么识别用户的点击来自哪个按钮
- 基于 Python django 的小型论坛系统