每日进步一点点:偏函数的学习使用

#!/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)
posted @ 2022-01-29 10:24  Alive_2020  阅读(31)  评论(0编辑  收藏  举报