day13装饰器_推导式
def func(arg): #创建函数func并传参arg
def inner(): #在func函数里面创建函数inner
print("before") #在inner里面打印字符串"before"
v = arg()#将arg里面的函数运行并赋给v
print("after")#在inner里面打印字符串"after"
return v #在inner里面返回v的值
return inner#在func里面返回inner
#装饰器就是在不改变index的值的情况下添加"before"和"after"
def index():#创建函数index
peint("123")#在函数index里面打印"123"字符串
return "666"#在index里面返回字符串"666"
index = func(index)#调用func函数并传入index函数
index() #调用index函数
def func(arg):
def inner():
print("before")
v = arg()
print("after")
return v
return inner
#第一步:执行func函数并将下面的函数参数传递,相当于:func(index)
#第二步:将func的返回值重新赋值给下面的函数名。index = func(index)
#装饰器
def index():
peint("123")
return "666"
index()
装饰器:在不改变原函数内部代码的基础上,在函数执行之前和之后自动执行某个功能。应用:
import time
?
def wrapper(func):
def inner():
start_time = time.time() #获取当前时间
v = func()
end_time = time.time() #获取当前时间
print(start_time-end_time)
return v
return inner
?
def func1():
time.sleep(2) #等待两秒时间
print(123)
?
def func2():
time.sleep(1) #等待两秒时间
print(123)
?
def func3():
time.sleep(1.5) #等待两秒时间
print(123)
func1()
#加参数
def func(arg):
def inner(*args,**kwargs):
print("before")
v = arg(*args,**kwargs)
print("after")
return v
return inner
def index():
peint("123")
return "666"
index("yidn")
推导式
列表推导式
-
基本格式
vals = [i for i in "alex"]
v1 = [i for i in "alex"]
v2 = [i+100 for i in range(10)]
v3 = [ 99 if i>5else 66 for i in range(10)]
?
def func():
print(123)
v4 = [func for i in range(10)]
?
v5 = [lambda :100 for i in range(10)]
?
def num():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in num()])
?
v9 = [i for i in range(10) if i > 5]
集合推导式
v1 = { i for i in "alex"}
字典推导式
v1 = {"k"+str(i):i for i in range(10)}