链接函数在main中调用。是“ Pythonic”吗?

时间:2018-12-31 21:15:02

标签: python

最近,我的一些代码使我想到了一个问题,即将函数的输出用作变量,然后将那些相同的变量用作其他函数中的参数。定义main时全部。我相信这会导致调试时出错以及将文件用作模块时造成混乱。

下面是一个示例:

def add_two_numbers(x, y):
    z = x + y
    return z

def now_divide_two(z, s):
    t = z / s 
    return t

第一种方法:

def main():
    added = add_two_numbers(5, 10)
    final_output = now_divide_two(added, 3)
    print(final_output)

第二种方法:

def main():
    final_output = now_divide_two(add_two_numbers(5,10), 3)
    print(final_output)

样式指南和良好实践表明,第一种方法优于第二种方法。但是,我仍然觉得它们都是“不可思议的”。这样,让我们​​假设函数变得更加复杂,但是仍然需要使用彼此输出作为下一个参数的原理。建议在main中运行功能的方法是什么?

3 个答案:

答案 0 :(得分:2)

将一个函数的结果传递给另一个函数并没有什么异常之处。这通常是做事的最佳方法。

第一种样式在清晰度方面优于第二种样式,因为它很容易确定传递给now_divide_two的值代表什么。在第二种方法中,您无需声明要传递给now_divide_two的变量,因此您必须猜测要传递的值代表什么。在第一种方法中,有一个带有名称的变量,因此您可以相当清楚地知道该变量的含义以及将其传递给另一个函数的原因。

但是,有时候,很容易假设函数的参数是什么意思(例如str),在这种情况下,最好直接将函数的结果传递给另一个函数。

答案 1 :(得分:0)

从功能上讲,这两种方法是等效的(除非存在细微差异,例如临时变量与显式命名变量),所以两种方法在本质上都比另一种“更好”。

“更好”取决于实际需要和情况。一些具体的考虑因素可帮助您确定可能遇到的情况:

  • 单行方法使用较少的代码行。有时(很少)很重要。
  • 使用临时变量代替新的名称空间条目可能,在某些情况下可以提高非常有限的性能。在大多数情况下,这都不是可行的方法,也不值得进行优化。
  • 如果要记录或以其他方式处理中间值,则必须使用多行方法。
  • 具有更多较短的行通常更具可读性。可读性比简洁性更有用,尤其是对于像Python这样的语言。

您可以说,我个人倾向于倾向于中间任务,而不是单片衬板。但是,这通常是一个品味问题。在可能的情况下,权衡不同方法的利弊。有时候,您必须认识到这确实无关紧要,然后随便处理一下当前对您而言更好的事情。

答案 2 :(得分:-2)

第一种方法势在必行。第二是功能。许多学术背景之外的人都倾向于使用命令式风格,理由是可读性高。如果您喜欢第二种风格,则可能喜欢Lisp或Clojure,其中函数式编程占主导地位