Python_装饰器
2018-09-10 01:06:27来源:博客园 阅读 ()
装饰器:修改其他函数功能的函数
@函数
1 def home(func): # 这就是一个装饰器 2 def inner(arg): 3 print('hello,') 4 func(arg) 5 return inner 6 @home # 装饰器关键字 7 def eye(name): 8 print('see,%s'% name) 9 10 #eye = home(eye) # 相当于@home 11 eye("vera")
结果:
hello,
see, Vera
代码详解:
若eye里有返回值,则把func(name)改为 return func(name)
1 def home(func): 2 3 def inner(*args, **kwargs): # 动态参数用于传入多个参数,这里表示tuple与字典形式的参数都可以传入 4 5 print('hello,') 6 return func(*args, **kwargs) # return用于返回mouse里的return值 7 return inner 8 9 10 @home 11 def eye(name, passwd): 12 print('see, %s, or, %s' % (name, passwd)) 13 14 15 16 @home 17 def mouse(name, passwd): # 可传入两个参数 18 19 print('speak, %s,or ,%s' % (name, passwd)) 20 return 3 21 22 23 # eye = home(eye) 24 h = mouse('hi', 'over') 25 eye('yee', passwd="ha") # 传入两个不同的参数 26 print(h) # 用于测试是否可以打印mouse里的返回值
结果:
hello, speak, hi,or ,over hello, see, yee, or, ha 3
复杂装饰器:(了解)一个装饰器框架,可以直接传入多个函数作为一个装饰器
1 def Before(request, kargs): 2 print('before') 3 return 3 4 5 def After(request, kargs): 6 print('after') 7 8 9 def complex(before_func, after_func): 10 11 def come(main_func): 12 13 def on(request, kargs): 14 15 before_result = before_func(request, kargs) 16 if(before_result != None): 17 print('传入函数有返回值') 18 return before_result 19 20 main_result = main_func(request, kargs) 21 if(main_result != None): 22 print('传入函数有返回值') 23 return main_func 24 25 after_result = after_func(request, kargs) 26 if(after_result != None): 27 print('传入函数有返回值') 28 return after_func 29 30 return on 31 return come 32 33 @complex(Before, After) 34 def show(request, kargs): 35 print('hello') 36 37 38 show('Vera', 'Presly')
结果:
Vera
hello
Presley
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Django邮件发送
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash