Python一个很好玩的特性decorator
直接上代码,这个例子是从《The Quick Python Book 2ed》里面抄出来的,代码是Python3的。
不用decorator的代码
1 def myfunction(parameter): 2 print(parameter[0]) 3 4 myfunction("hello")
输出如下
h
使用decorator的代码
1 def dec123(func): 2 print("in decorate function, decorating", func.__name__) 3 4 def wrapper_func(*args): 5 print("Executing", func.__name__) 6 return func(*args) 7 return wrapper_func 8 9 10 @dec123 11 def myfunction(parameter): 12 print(parameter[0]) 13 14 myfunction("hello")
输出如下
in decorate function, decorating myfunction Executing myfunction h
没有实际项目中使用过,但是,这应该是一个很有用的特性。原函数myfunction打印参数下标0的元素,但是使用decorator的函数,即用dec123修饰的函数myfunction不止运行了原函数本身,还运行了原函数之前和之后的一些“修饰”代码。如果对myfunction的运行结果有怀疑的话,可以用decorator来debug,打印myfunction运行之前的运行状况和myfunction运行之后的运行状况,甚至可以用另一个函数替换myfunction。例如
1 def dec123(func): 2 print("in decorate function, decorating", func.__name__) 3 4 def wrapper_func(*args): 5 print("Executing", func.__name__) 6 return print(*args) 7 return wrapper_func 8 9 10 @dec123 11 def myfunction(parameter): 12 print(parameter[0]) 13 14 myfunction("hello")
将myfunction改为调用print,输出如下
in decorate function, decorating myfunction Executing myfunction hello
这样的写法似乎太邪恶了,如果纯粹出于debug的目的也就算了,改完记得把代码还原......
转载于:https://www.cnblogs.com/valleylord/p/3488886.html
Python一个很好玩的特性decorator相关推荐
- 介绍大家一个很好玩的网站。多人在线flash联机游戏。
介绍大家一个很好玩的网站.多人在线flash联机游戏. http://www.iminlikewithyou.com/ 在首页的左下角可以选择游戏.有炸弹超人(Balloono).putt putt ...
- C语言写一个很好玩的皇帝的后宫小游戏
C语言写一个很好玩的皇帝的后宫小游戏 前言 先演示一下 上源码 总结 前言 只是单纯喜欢C语言,闲着无事把以前学习的时候的案例编了一下,都是很基础的代码,for,swich,if这些,基础好的看完后完 ...
- Family.Show:一个很好玩的东东
请参考http://familyshow.codeplex.com/,类似于一个家谱的软件 主要使用的技术是WPF 转载于:https://www.cnblogs.com/chenxizhang/ar ...
- 一个很变态,但是.......可以让你迅速掌握python的方法
从业多年,我想根据自己的行业经验给大家提一些建议. 和其他行业相比,做python开发确实是容易找工作一点,毕竟受用面毕竟广,现在很多刚毕业的从事python开发都有8K左右的薪资,稍微有点经验的都是 ...
- python写一个很简单的Atm机系统,使用pickle模块和json模块来保存数据
我做的是一个很简单的Atm系统,很多都没约束条件 目的: 用面向对象思维来处理 运用文件的读写 文件的读写用pickle模块和json模块来处理 pickle模块: pickle模块处理数据功能很强大 ...
- proj Java_proj 一个炫酷的飞机大战java游戏,很好玩的,很酷炫 用了 的图形界面 Games 256万源代码下载- www.pudn.com...
文件名称: proj下载 收藏√ [ 5 4 3 2 1 ] 所属分类: Games 开发工具: Java 文件大小: 3435 KB 上传时间: 2016-05-11 下载次数: 0 提 ...
- 使用Python生成动态图表,一个很Cool的教程
作者 | Viviane 译者 | 刘旭坤 编辑 | Jane 出品 | AI科技大本营 [导读]Matplotlib 和 Seaborn 用来做数据固定的静态图表很不错,但如果需要动态显示数据的变化 ...
- LeetCode 605[Python]. 种花问题 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
LeetCode 605. 种花问题 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和 ...
- python找工作难吗-Python虽然很火,为啥找工作这么难?
原标题:Python虽然很火,为啥找工作这么难? 前几天看到某论坛有人提了这么个问题,Python这么火,为啥找工作这么难呢? 这两年因为第三波人工智能热潮让 Python火了一把,让中小学生.非程序 ...
- python 制作gif-利用Python如何制作好玩的GIF动图详解
前言 之前我们分享过用Python进行可视化的9种常见方式.其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Python和matplotlib制作GIF图表. 假如电脑上没有 ...
最新文章
- java 继承类 变量、静态变量、构造函数执行顺序
- VS的几个实用快捷键
- python变量如何使用,python如何使用变量
- 电子商务与计算机科学与技术的相关性,电子商务、计算机科学与技术、法学等相关专业。.doc...
- python中函数的参数
- Djangosocket简单实现django简化版
- java 对象和类
- QStackedWidget设置无效问题
- Border Layout
- MyBatis中的@Mapper注解 @Mappe与@MapperScan关系
- php跳转图片_HTML点击图片跳转到新页面怎么实现?(示例)
- 基金公司十大非货规模逆袭(2010-2020)
- 禁止屏幕保护使用密码
- python selenium 弹出框定位_selenium弹框元素定位-冻结界面
- 你可以有喜欢和善用的语言,但千万不要和她Bind
- C++ 分配器 allocator
- 爱尔兰咖啡(作者:痞子蔡)
- 推荐电影 迪士尼经典动画片大全 1937-2008
- 打造可用的梅花6硬键盘
- 今日早报,365资讯简报12条,热点新闻早知道
热门文章
- 传输层协议(10):滑动窗口(4)
- 平衡二叉树(AVL Tree)
- DPDK初始化分析(一)
- Android 高通 Wi-Fi 驱动
- 最小生成树 POJ - 3522(枚举边最小生成树)
- Linux打印全部的内容,linux提取指定列字符并打印所有内容(awk)
- jquery radio设置选中_前端jQuery实战之 attr() 和 prop() 的区别
- git revert 回滚代码至上一版本
- 2003 -服务器没有响应,PowerPoint2003
- jquery ajax 删除确认,jquery 漂亮的删除确认和提交无刷新删除示例