如何改进代码,减少代码量?

How to improve code and reduce number of code?

那段代码完全一样,所以我想用一种简单的方式重构它,减少行数。有一点不同的是 min/max 函数执行。 python 中的函数指针是否可以像 C 中那样调用 min/max 作为函数指针?

def calculate_min(a, b, c, d, e, f):
    try:
        v = a[e][f]
        b[d] = v if np.isnan(b[d]) else min(b[d], v)    #min()
    except KeyError as exc:
        logger.error("keyerror")

def calculate_max(a, b, c, d, e, f):
    try:
        v = a[e][f]
        b[d] = v if np.isnan(b[d]) else max(b[d], v)    #max()
    except KeyError as exc:
        logger.error("keyerror")

减少重复的一个选项是

def calculate_value(a, b, c, d, e, f, func=max):
    try:
        v = a[e][f]
        b[d] = v if np.isnan(b[d]) else func(b[d], v)    #min() or max()
    except KeyError as exc:
        logger.error("keyerror")

根据 func 参数,您可以传递 minmax 函数并获得想要的结果。这是一个关于如何将函数作为参数传递的示例:How do I pass a method as a parameter in Python

好吧,您可以只创建一个函数并添加一个参数来指定要调用的函数。例如:

def calculate_func(a, b, c, d, e, f, func):
    try:
        v = a[e][f]
        b[d] = v if np.isnan(b[d]) else func(b[d], v)    #replaced min/max by func
    except KeyError as exc:
        logger.error("keyerror")

calculate_min = lambda a, b, c, d, e, f: calculate_func(a, b, c, d, e, f, min)