码迷,mamicode.com
首页 > 编程语言 > 详细

Python-装饰器-示例

时间:2018-06-03 14:37:43      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:index   wrap   lag   turn   func   tar   app   odi   timeout   


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/6/3 0003 11:47
# @Author : Anthony.Waa
# @Site :
# @File : test.py
# @Software: PyCharm

# 示例1:
# 带状态的装饰器
from functools import wraps
import time
def timeout(flag1):
def timmer(f):
‘‘‘
此函数用于显示被装饰函数的运行效率,打印运行市场即为正确
:param f: f = JD()
:return:
‘‘‘
@wraps(f)
def inner(*args,**kwargs):
if flag1:
start_time = time.time()
ret = f(*args,**kwargs)
end_time = time.time()
print(‘此函数的执行效率%s‘ % (end_time - start_time))
return ret
else:
ret = f(*args, **kwargs)
return ret
return inner
return timmer


flag = False
@timeout(flag)
def JD():
‘‘‘
此处为被装饰函数
:return:
‘‘‘
time.sleep(0.3)
print(‘非常复杂......‘)
return 666

JD()


# 示例2
# 带参数的装饰器

from functools import wraps
import time
def timeout(flag1):
def timmer(f):
‘‘‘
此函数用于显示被装饰函数的运行效率,打印运行市场即为正确
:param f: f = JD()
:return:
‘‘‘
@wraps(f)
def inner(*args,**kwargs):
if flag1:
start_time = time.time()
ret = f(*args,**kwargs)
end_time = time.time()
print(‘此函数的执行效率%s‘ % (end_time - start_time))
return ret
else:
ret = f(*args, **kwargs)
return ret
return inner
return timmer



@timeout(‘京东‘)
def JD():
‘‘‘
此处为被装饰函数
:return:
‘‘‘
time.sleep(0.3)
print(‘我是京东......‘)
return 666

@timeout(‘淘宝‘)
def taobao():
‘‘‘
此处为被装饰函数
:return:
‘‘‘
time.sleep(0.3)
print(‘我是淘宝......‘)
return 666
JD()
taobao()





# 示例3:
# 多个装饰器装饰一个函数

import time

def wrapper1(func1): # func = inner2
def inner1():
print(‘wrapper1 ,before func‘) # 1
func1() # inner2
print(‘wrapper1 ,after func‘) # 7
return inner1


def wrapper2(func2): # func2 = inner3
def inner2():
print(‘wrapper2 ,before func‘) # 2
func2() # inner3
print(‘wrapper2 ,after func‘) # 6
return inner2

def wrapper3(func3): # func3 = index()
def inner3():
print(‘wrapper3 ,before func‘) # 3
func3() # index()
print(‘wrapper3 ,after func‘) # 5
return inner3



@wrapper1 # index = wrapper1(inner2)
@wrapper2 # index = wrapper2(inner3)
@wrapper3 # index = wrapper3(index)
def index():
print(‘in my heart‘) # 4
time.sleep(0.3)



index()












Python-装饰器-示例

标签:index   wrap   lag   turn   func   tar   app   odi   timeout   

原文地址:https://www.cnblogs.com/ipyanthony/p/9128723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!