python学习之装饰器

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

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