我需要帮助来重构我的程序。我有一个在两个程序中调用的函数。在一个程序中,我只需要overtimeAmount,而在另一个程序中,我需要返回所有三个变量。如何重构这两个函数只返回程序所需的变量。
def OT2(hours, rate):
if hours > 160.0:
overtimeHours = hours - 160.0
overtimeRate = rate * 1.05
overtimeAmount = overtimeHours * overtimeRate
else:
overtimeAmount = 0.0
overtimeRate = 0.0
overtimeHours = 0.0
return overtimeHours, overtimeRate, overtimeAmount
发布于 2021-04-30 02:11:36
使用两个函数而不是一个函数来做两件事。这将在可维护性方面发挥很大作用,并遵循doing one thing well的Unix哲学。
def get_overtime_hours(hours):
return max(0, hours - 160)
def get_overtime_info(hours, rate):
overtime_hours = get_overtime_hours(hours)
if overtime_hours > 0:
overtime_rate = rate * 1.05
overtime_amount = overtime_hours * overtime_rate
else:
overtime_amount = 0.0
overtime_rate = 0.0
return overtime_hours, overtime_rate, overtime_amount
发布于 2021-04-30 00:48:09
建议不要返回可变数量的结果,因为这会使您的函数不可预测;相反,
PEP 8在Be consistent in return语句中对此有一些说法,但没有显式地涵盖您的情况
在返回语句中保持一致。函数中的所有return语句都应返回表达式,或者都不应返回表达式。如果任何return语句返回表达式,则任何不返回值的return语句都应显式地将其声明为return None,并且显式return语句应出现在函数的末尾(如果可达).
发布于 2021-04-30 00:46:57
一种可能是添加第三个参数来指示您想要返回什么,然后添加一个if语句来决定返回什么。这看起来并不比仅仅返回所有3个值并忽略你不想要的值更干净。
https://stackoverflow.com/questions/67321661
复制相似问题