【问题标题】:Whether to make a new variable to be returned in a Python function是否在 Python 函数中创建要返回的新变量
【发布时间】:2019-07-09 08:02:14
【问题描述】:


在返回结果之前寻找是否在函数中分配新变量的一些指导,如下:

# create function to take in a number
# which is then taken to the power of another number
# make a new variable called result, and return that variable

def exponential(number, power):
    result = number**power
    return result

或者我是否可以简单地将计算全部返回一行:

def exponential(number, power):
    return number**power


我对编程非常陌生,所以我知道到处都有错误。 也欢迎就我如何提出这个问题、代码中的任何其他内容或任何可以帮助我在 Google 中找到此问题的关键字提供任何反馈。

【问题讨论】:

  • 两个版本都试过了吗?你得到不同的输出了吗?
  • 是的,看起来没有区别。如果我为number 输入一个整数,它们都会返回整数。为number 输入小数会导致两个函数都返回浮点数。
  • 它们几乎相同,您希望将结果放入变量中的唯一原因是将它用于更多事情或澄清它是什么
  • 问题更多的是关于约定的。我并没有坚持下去,只是想尽早尝试并学习良好的做法。
  • 显然,结果是一样的,但是第二个版本(没有result 变量的那个)会运行得更快,因为不需要实例化一个新变量。如果您需要循环运行该函数数千次,则第二个版本是您的最佳选择。

标签: python function naming


【解决方案1】:

没有令人信服的理由偏爱其中之一。

对于非平凡的计算,将值分配给变量可能会使代码更具可读性并且更易于调试(因为您可以 print(...) 或 - 更好的是 - logging.info(...) 值,否则在 @ 之前检查和操作它987654323@ing it)但到底在哪里划线完全取决于您和目标受众。

如果完全是你自己的代码,并且你完全熟悉这个函数的逻辑,你可能不需要变量。如果这是未来维护者可能不熟悉功能的共享代码,或者过去经常需要修复错误的地方,请相应地朝相反的方向进行调整。

【讨论】:

  • 写出好的代码真的是一门艺术,不是吗。有很多需要考虑,这几乎是微不足道的!感谢您的意见。
【解决方案2】:

您可以像第二个示例一样在一行中返回结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多