Python自动化开发-装饰器
Python自动化开发-装饰器
1.装饰器基础
装饰器组成=高阶函数+函数嵌套+闭包
装饰器:装饰器本质上就是函数,功能是为其它函数添加附加功能。
装饰器基本原则:1)不修改被修饰函数的源代码;2)不修改被修饰函数的调用方式。
装饰器例1:
2.高阶函数
高阶函数定义:如果函数接收的参数是一个函数名或者函数的返回值是一个函数名,满足这两个条件任意一个,都可称之为高阶函数。
高阶函数例1:函数接收的参数是一个函数名
#!/usr/bin/env python # -*- coding:utf-8 -*- #高阶函数例子,满足条件是函数接收的参数是函数名 def test02(): print("你好,北京!") def test01(test03): print(test03) test03() test01(test02)
代码执行结果:
你好,北京!
高阶函数例2:高阶函数接收的参数是一个函数名,实现功能是统计函数执行时间
#!/usr/bin/env python # -*- coding:utf-8 -*- import time #高阶函数例子,满足条件是函数接收的参数是函数名 def test02(): time.sleep(2) print("你好,北京!") def test01(test03): start_time=time.time() test03() stop_time=time.time() print("函数运行时间为%s" %(stop_time-start_time)) test01(test02)
代码执行结果:
你好,北京!
函数运行时间为2.000218629837036
3.装饰器的使用
装饰器例1:装饰器举例,计算test函数运行时间
#!/usr/bin/env python # -*- coding:utf-8 -*- import time #装饰器举例,计算test函数运行时间 def test2(func): def test3(): start_time=time.time() func() stop_time=time.time() print("test函数的运行时间为%s" %(stop_time-start_time)) return test3 #语法糖@test2 <==> test=test2(test) @test2 def test(): time.sleep(2) print("test函数运行结束") test()
代码运行结果:
test函数运行结束
test函数的运行时间为2.0000033378601074