【问题标题】:Can i use PRINT function instead of RETURN at the end of every function i create? [duplicate]我可以在我创建的每个函数的末尾使用 PRINT 函数而不是 RETURN 吗? [复制]
【发布时间】:2019-09-19 12:27:10
【问题描述】:

我只是无法理解在函数末尾返回的重要性。无论如何,你必须输入 print(function()) 那么为什么我们不能只在函数的 and 以及当我们输入 print(value) 时需要使用该函数,只需像 function() 一样调用它?

def example():
    value = 5+5
    print(value)

example()

【问题讨论】:

  • 当您想做打印以外的事情时会发生什么?
  • 你可以,只是不会同样的事情。 print 写入标准输出; return 将函数的值设置为表达式。比较x 之后x = example() 的值,使用每个值来查看差异。
  • 您在实际代码中使用print 的频率比您想象的要少
  • 换一种说法,您希望print(example() + example()) 打印20 吗?为什么或为什么不?

标签: python printing return


【解决方案1】:

有一个名为separation of concerns 的原则建议每个代码单元(函数、类、模块等)应该只负责做一件事(其中“一件事”的定义可以灵活地解释正在讨论的代码单元的大小)。好处是遵循这个原则的代码更容易测试、调试、组合和重用。

如果您编写一个打印其结果的函数,那么在您不想打印结果而是以其他方式使用它的情况下,更难重用该代码。该函数做两件事:计算结果,并打印它。如果您不希望它做第二件事,或者希望它以稍微不同的方式做第二件事,那么您就是 S.O.L.另一方面,如果函数只计算其结果,只做一件事,调用者可以轻松打印它,如果这是他们想要的。

也就是说,如果您经常发现自己打印结果,那么提供第二个函数来调用第一个函数并打印结果可能是有意义的,尤其是在打印它很复杂的情况下。但是拥有第一个可用的函数是未来代码重用的胜利。

一些开发方法建议你写出最简单的东西。但我认为保留关注点分离是在许多情况下忽略此建议的明显且合乎逻辑的理由。

【讨论】:

    【解决方案2】:

    printreturn 没有做同样的事情。前者向用户显示信息,而后者则从函数中给出原始值。考虑以下几点:

    >>> def print_10():
    ...     print(10)
    ... 
    >>> def return_10():
    ...     return 10
    ... 
    >>> print(return_10() + return_10())
    20
    >>> print(print_10() + print_10())
    Traceback (most recent call last):
      ...
    TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'
    

    return_10 返回数字 10,而 print_10 将值 10 打印到控制台并返回 None(因为您没有指定返回值)。尝试在其他地方使用该值是可能的(None 是一个有效的结果),但它可能不会做你想做的事情。

    在显式类型中考虑这一点就很清楚了:

    def print_10() -> None:
        print(10)
    
    def return_10() -> int:
        return 10
    

    【讨论】:

      【解决方案3】:

      print 语句仅将括号内的内容打印到控制台以供查看,并且不能存储在变量中或对其执行任何操作,因为它是 NoneType 我会用一个例子告诉你:

      def example():
          a = 5
          b = 6
          print(a + b)
      
      
      x = example() + 5
      print(x)
      

      上面的代码将返回一个TypeError。 但是如果你把它改成这样:

      def example():
          a = 5
          b = 6
          return(a + b)
      
      
      x = example() + 5
      print(x)
      

      你得到 16

      如果您想显示信息并且不再使用它,请使用print,否则请使用return

      【讨论】:

        猜你喜欢
        • 2016-02-11
        • 2019-08-22
        • 1970-01-01
        • 1970-01-01
        • 2017-06-11
        • 1970-01-01
        • 2016-03-17
        • 1970-01-01
        • 2011-10-28
        相关资源
        最近更新 更多