首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python函数重构

Python函数重构
EN

Stack Overflow用户
提问于 2021-04-30 00:43:07
回答 3查看 54关注 0票数 0

我需要帮助来重构我的程序。我有一个在两个程序中调用的函数。在一个程序中,我只需要overtimeAmount,而在另一个程序中,我需要返回所有三个变量。如何重构这两个函数只返回程序所需的变量。

代码语言:javascript
运行
复制
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
EN

回答 3

Stack Overflow用户

发布于 2021-04-30 02:11:36

使用两个函数而不是一个函数来做两件事。这将在可维护性方面发挥很大作用,并遵循doing one thing well的Unix哲学。

代码语言:javascript
运行
复制
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
票数 2
EN

Stack Overflow用户

发布于 2021-04-30 00:48:09

建议不要返回可变数量的结果,因为这会使您的函数不可预测;相反,

  • 始终返回相同的数字(可能会使未使用的值为无),并让调用者选择要保留的值
  • 返回字典(一个结果)

PEP 8Be consistent in return语句中对此有一些说法,但没有显式地涵盖您的情况

在返回语句中保持一致。函数中的所有return语句都应返回表达式,或者都不应返回表达式。如果任何return语句返回表达式,则任何不返回值的return语句都应显式地将其声明为return None,并且显式return语句应出现在函数的末尾(如果可达).

票数 1
EN

Stack Overflow用户

发布于 2021-04-30 00:46:57

一种可能是添加第三个参数来指示您想要返回什么,然后添加一个if语句来决定返回什么。这看起来并不比仅仅返回所有3个值并忽略你不想要的值更干净。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67321661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档