如何改进代码,减少代码量?
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 参数,您可以传递 min
或 max
函数并获得想要的结果。这是一个关于如何将函数作为参数传递的示例: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)
那段代码完全一样,所以我想用一种简单的方式重构它,减少行数。有一点不同的是 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 参数,您可以传递 min
或 max
函数并获得想要的结果。这是一个关于如何将函数作为参数传递的示例: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)