每日进步一点点:偏函数的学习使用
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# DevVersion: Python3.6.8
# Date: 2021-11-16 22:39
# PyCharm|test
from functools import partial
# 偏函数的学习:
"""
1. 解决某些方法调用只能传函数名,但传的函数需要入参,如常见的进程里的回调,只能传函数名,无法为回调函数传参
2. 解决某些方法入参有10几个,但实际我们只会改动特定几个,就可以通过偏函数进行封装,后面调用只需传需要改的参数
"""
def learn_every_day(a, b, c, d, f=None, g="happy"):
return a + b + c + d
# 我们平常调用a,b都会固定分布传1,和2 只会使用c,d参数
learn_every_day_func_obj = partial(learn_every_day, 1, 2)
result = learn_every_day_func_obj(3, 4)
print(result) # 10
# 实现工作中的不同的业务有不同的操作需求
def my_add(model): pass
def my_del(model): pass
def my_update(model): pass
def exe_func(func, *args, **kwargs): return 1
class Model:
def __init__(self, a):
self.a = a
self.b = ""
model = Model(10000)
func_rule_dict = {"add": my_add, "del": my_del, "update": my_update}
rule_list = ["del", "update"] # 获取不同的人的需求
for rule in rule_list:
res = exe_func(func_rule_dict[rule], model)
# 通过偏函数解决
partial(func_rule_dict[rule], model)
人生苦短,我用python!