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)
@func#装饰器
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
?
@wrapper
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
@func
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)}