# 回忆装饰器
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("糯米饭")