一、装饰器
import time
def spend(func):
def wrapper(*args, **kwargs):
time1 = time.time()
res = func(*args, **kwargs)
print("%s spend %s s, %s" % (func.__name__, time.time() - time1, args))
return res
return wrapper
@spend
def hello(*args, name=None):
print(" ")
hello("123", name="iterator")
"""
hello spend 0.0 s, ('123',)
"""
装饰器作用
第一步:hello = spend(hello(“123”, name=“iterator”))
第二步:hello = wrapper(“123”, name=“iterator”)
第三步:res = func(“123”, name=“iterator”)
return res
第四步:hello = res
综上,内部的wrapper函数,接受了被装饰的hello函数的参数,
运行完毕之后,返回运行结果,并打印耗时
被装饰的函数,接收了返回的运行结果;
二、其他
func(*args, **kwargs)
*args 表明:不定项参数,用于接收函数调用时不定长度的参数
*kwargs 表明:关键字参数,用于接收形如 name=“xiaoming” 这种键值对形式的参数