理解装饰器的前提
- 所有东西都是对象(函数可以当做对象传递)
- 闭包
闭包的概念
- 函数嵌套
- 内部函数使用外部函数的变量
- 外部函数的返回值为内部函数
一个简单的闭包例子
def test(name):
def test_in():
print(name)
return test_in
func = test('whyz')
func()
为什么需要装饰器
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用
概括的讲,装饰器的作用就是为已经存在的函数或对象添加额外的功能
在各种场合,时间都是一个宝贵的概念。由此,便想到用装饰器来实现对指定函数是否超时的判断
Talk is cheap, show me the code
从上面的图片可以看到,此装饰器为三层嵌套,最外层可以接收参数,定义多少秒为超时
内层主要使用到的技术就是信号,但Windows平台对信号的支持不足,因此该代码需要在类Unix平台运行
下载地址
#该文章暂时没有评论