# 回忆装饰器
from functools import wraps # 可以改变一个函数的名字, 注释...
def wrapper(fn):
@wraps(fn) # 把inner的名字改变成原来的func
def inner(*args, **kwargs):
print("前")
ret = fn(*args, **kwargs)
print("后")
return ret
return inner
@wrapper # func = wrapper(func)
def func():
print('哈哈哈')
#
print(func.__name__) # func
# map 映射 reduce 归纳
print(list(map(lambda x: x**2, [i for i in range(10)])))
from functools import reduce
#
def func(a, b):
return a + b # 0+1 +4 +7+2+5+8+3+6+9 # 累加
#
# # 会把我们每一个数据交给func去执行, 把默认值作为第一个参数传递给函数
# # 第二个参数就是你这个序列中的第一个数据
# # 接下来. 把刚才返回的结果作为第一个参数传递个a
# # 继续吧刚才的结果给第一个参数. 把第三个数据传递给b
ret = reduce(func, [1,4,7,2,5,8,3,6,9])
# # 工作流程
func(func(func(0, 1),4),7)
print(ret)
print(reduce(lambda x, y:x + y, [i for i in range(101)]))
from functools import partial
def chi(zhushi, fushi):
print(zhushi, fushi)
# 固定函数中某些参数的值
chi2 = partial(chi, fushi="辣鸡爪")
chi2("大米饭")
chi2("小米饭")
chi2("黑米饭")
chi2("黄米饭")
chi2("紫米饭")
chi2("糯米饭")