首页 > 编程语言 > 详细

python学习之装饰器

时间:2020-04-08 15:28:47      阅读:61      评论:0      收藏:0      [点我收藏+]
import time
def timmer(func):
def wrapper(*args,**kwargs):
start_time=time.time()
res=func(*args,**kwargs)
stop_time=time.time()
print(‘函数运行时间是%s‘%(stop_time-start_time))
return res
return wrapper


def timer(func):
def ttimeer():
start_time=time.time()
func()
stop_time=time.time()
print(‘所用时间%s‘%(stop_time-start_time))
return func
return ttimeer

@timer
def foo():
time.sleep(1)
print("来自foo")
# @timer相当于foo=timer(foo)
# foo=timer(foo) 返回ttimeer地址
# foo() 调用ttimeer方法


def timer(func):
def ttimeer(name,age):
start_time=time.time()
res=func(name,age)
stop_time=time.time()
print(‘%s,%s所用时间%s‘%(name,age,stop_time-start_time))
return res
return ttimeer

@timer
def foo(name,age):
time.sleep(1)
print("来自foo")
return "foo 返回值"
# @timer相当于foo=timer(foo)
# foo=timer(foo) 返回ttimeer地址
# foo() 调用ttimeer方法
foo(‘jj‘,‘18‘)

装饰器
本质就是函数,功能是为其他函数添加附加功能

原则:
1.不修改被修饰函数的源代码
2.不修改被修饰函数的调用方式

装饰器的知识储备
装饰器=高阶函数+函数嵌套+闭包

高阶函数:
函数是第一类对象,即函数可以当作数据传递
#1 可以被引用
#2 可以当作参数传递
#3 返回值可以是函数
#3 可以当作容器类型的元素

>>> a=[10,12,13,1,23,34]
>>> a,*_,b=a

python学习之装饰器

原文:https://www.cnblogs.com/jinpingzhao/p/12659669.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!