本文实例讲述了python3.5装饰器。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:zhengzhengliu
#高阶函数+嵌套函数==>装饰器
import time
def timer(func): #timer(test1)-->func=test1
def decor():
start_time = time.time()
func() #run test1
stop_time = time.time()
print ( "the run time of func is %s" % (stop_time - start_time))
return decor
@timer #test1 = timer(test1)
def test1():
time.sleep( 3 )
print ( "in the test1" )
@timer #test2 = timer(test2)
def test2():
time.sleep( 3 )
print ( "in the test2" )
print (timer(test1)) #打印deco的地址
#test1 = timer(test1)
#test2 = timer(test2)
test1() #-->执行decor
test2()
|
运行结果:
<function timer.<locals>.decor at 0x00b720c0>
in the test1
the run time of func is 3.000171661376953
in the test2
the run time of func is 3.000171661376953
1、装饰器修饰有参数函数
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#高阶函数+嵌套函数==>装饰器
import time
def timer(func): #timer(test1)-->func=test1
def decor(arg1,arg2):
start_time = time.time()
func(arg1,arg2) #run test2
stop_time = time.time()
print ( "the run time of func is %s" % (stop_time - start_time))
return decor
@timer #test2 = timer(test2) = decor test2(name)==>decor(name)
def test2(name,age):
print ( "test2:" ,name,age)
test2( "liu" , 23 )
|
运行结果 :
test2: liu 23
the run time of func is 0.0
2、装饰器修饰多个函数,有的函数带参数,有的函数不带参数的情况(采用参数组)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#高阶函数+嵌套函数==>装饰器
import time
def timer(func): #timer(test1)-->func=test1
def decor( * args, * * kwargs):
start_time = time.time()
func( * args, * * kwargs) #run test1
stop_time = time.time()
print ( "the run time of func is %s" % (stop_time - start_time))
return decor
@timer #test1 = timer(test1)
def test1():
time.sleep( 3 )
print ( "in the test1" )
@timer #test2 = timer(test2) = decor test2(name)==>decor(name)
def test2(name,age):
time.sleep( 1 )
print ( "test2:" ,name,age)
#test1 = timer(test1)
#test2 = timer(test2)
test1() #-->执行decor
test2( "liu" , 23 )
|
运行结果:
in the test1
the run time of func is 3.0036065578460693
test2: liu 23
the run time of func is 1.0084023475646973
希望本文所述对大家python程序设计有所帮助。
原文链接:https://blog.csdn.net/loveliuzz/article/details/77878019