'''
python2.4以上支持使用@将装饰器应用在函数上,只需要再函数定义前加上@装饰器的名称即可
'''
def wrapper2(f):
def inner2(name,age):
if age<=0:
age = 0
return f(name,age)
return inner2
@wrapper2
def say(name,age):
return "%s is good man!he is %d years old"%(name,age)
# @wrapper2相当于 say = wrapper2(say)
print(say("sunck",-18))
#通用装饰器
def wrapper(f):
def inner(*args,**kwargs):
#在这增加功能
print("no zuo no die")
res = f(*args,**kwargs)
#如果要修改原函数的返回值,在这修改
return res
return inner
@wrapper
def func(name,age):
print(name,age)
return "sunck is a good man"
print(func("kaige",17))
@wrapper
def func2(height):
print(height)
print("******************")
func2(111)
#参数的装饰器
def wrapper3(count):
def deco(f):
def inner3(*args,**kwargs):
for i in range(count):
f(*args,**kwargs )
return inner3
return deco
@wrapper3(5)
def fun():
print("sunck is a good man")
fun()
#写一个装饰器,统计运行时间
import time
def timer(f):
def inner4(*args,**kwargs):
time1 = time.time()
res = f()
time2 = time.time()
print("程序运行时间:%f"(%time2-time1))
return res
return inner4
@timer
def fun4():
print("sunck is nice man")
time.sleep(2)
print("sunck is a good man")
fun4()
python快速学习回忆版本------第七章-2
最新推荐文章于 2024-09-05 10:28:02 发布