我可以在创建的每个函数的末尾使用PRINT函数而不是RETURN吗?

时间:2019-04-30 19:45:56

标签: python printing return

我只是不明白函数结尾处return的重要性。无论如何,返回u必须输入print(function()),所以为什么我们不能只在函数的and处键入print(value),以及何时需要使用该函数就像调用function()一样?

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

example()

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

有一个称为separation of concerns的原则,建议每个代码单元(函数,类,模块等)应仅负责做一件事(其中“一件事”的定义可以灵活说明) (用于讨论的代码单元的大小)。好处是遵循此原理的代码更易于测试,调试,组合和重用。

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

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

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