day12
主要内容
-
装饰器
-
推导式
-
装饰器
# 语法 ''' 装饰器; 在不改变原函数内部代码的基础上,在函数执行之前和之后自动执行某个功能 应用: 1. 计算函数时间 2. ...... 语法格式: # 装饰器的编写 def x(func): def y(): ret = func return ret return y # 装饰器的应用 @x def index(): pass @x def manage(): pass # 执行函数,自动触发装饰器 index() manage() 应用场景: 想要为函数扩展功能时,可以选择装饰器 标准编写格式: def 外层函数(参数): def 内层函数(*args,**kwargs): return 参数() return 内层函数 标准函数应用: @外层函数 def 参数(): pass 参数() ''' def func(arg): def inner(): print('before') v = arg() print('after') return arg() return inner @ func # 第一步,执行func函数并将下面的函数参数传递,相当于func(index) # 第二步, 将func的返回值重新赋值给下面的函数名,相当于index = func(index) def index(): print('123') return 666 v = index() print(index)
'''
装饰器应用: 计算函数执行时间
'''
import time
def wrapper(func):
def inner():
start_time = time.time() # 获取当前时间
v = func()
end_time = time.time() # 获取当前时间
print(end_time - start_time)
return v
return inner
@ wrapper
def func1():
time.sleep(2)
print(123)
@ wrapper
def func2():
time.sleep(2)
print(123)
@ wrapper
def func3():
time.sleep(2)
print(123)
func1()
func2()
func3()
'''
装饰器应用:基线框架
'''
# 装饰器
def func(arg):
def inner():
print('已登录')
v = func
return v
return inner
# 功能函数
@func
def f1():
print('新增功能')
return 0
@func
def f2():
print('删除功能')
return 0
@func
def f3():
print('更新功能')
return 0
f1()
f2()
f3()
-
推导式
-
列表推导式
-
基本格式
''' 目的: 方便的生产一个列表 格式: v= [i for i in 可迭代对象] v= [i for i in 可迭代对象 if 条件] # 条件为真时执行append ''' vlas = [ i for i in 'llk'] # 集合 print(vlas) # 变量 = [ for循环的变量 for循环一个可迭代对象] v1 = [i for i in range(10)] print(v1) v2 = [i+100 for i in range(10)] print(v2) v3 = [99 if i>5 else 66 for i in range(10)] print(v3) def func(): return 123 v4 = [func for i in range(10)] v5 = [lambda : 100 for i in range(10)] result = v5[0]() def funa(): return i v6 = [funa for i in range(10)] result = v6[5]() v7 = [lambda : i for i in range(10)] result = v7[5]() v8 = [lambda x:x*i for i in range(10)] # 新浪微博面试题 # 面试题 def num(): return [lamba x:i*x for i in range(4)] # num() -> [函数,函数,函数,函数] print ([ m(2) for m in num() ]) # [6,6,6,6]
-
-
集合推导式
''' 目的: 方便的生产一个集合 格式: v= {i for i in 可迭代对象} v= {i for i in 可迭代对象 if 条件} '''
-
字典推导式
''' 目的: 方便的生产一个字典 格式: v= {'k' + str(i):i for i in 可迭代对象} '''
-