python中返回和打印之间的区别? [复制]

Posted

技术标签:

【中文标题】python中返回和打印之间的区别? [复制]【英文标题】:Difference between returns and printing in python? [duplicate] 【发布时间】:2011-04-22 08:08:41 【问题描述】:

在 python 中,我似乎不理解返回函数。既然可以打印,为什么还要使用它?

def maximum(x, y):
    if x > y:
        print(x)
    elif x == y:
        print('The numbers are equal')
    else:
        print(y)

maximum(2, 3)

这段代码给了我3。但是使用 return 它做同样的事情。

def maximum(x, y):
    if x > y:
        return x
    elif x == y:
        return 'The numbers are equal'
    else:
        return y

print(maximum(2, 3))

那么这两者有什么区别呢?很抱歉这个超级菜鸟问题!

【问题讨论】:

【参考方案1】:

重点

return 不是函数。它是一个控制流构造(如ifelse 构造)。这就是让您“在函数调用之间随身携带数据”的原因。

分解

print:将值作为输出字符串提供给用户print(3) 会给屏幕上一个字符串'3' 供用户查看。该程序将失去价值。

return:将值赋予程序。然后函数的调用者拥有实际数据和数据类型(bool、int 等...)return 3 将使用值 3 代替调用函数的位置。

示例时间

def ret():
    return 3

def pri():
    print(3)

4 + ret() # ret() is replaced with the number 3 when the function ret returns
# >>> 7
4 + pri() # pri() prints 3 and implicitly returns None which can't be added
# >>> 3
# >>> TypeError cannot add int and NoneType

【讨论】:

【参考方案2】:

老实说,这取决于您需要该功能做什么。如果函数规范声明它将打印出 max term,那么您所拥有的就可以了。对于这样的方法,通常发生的情况是该方法应该返回更大的实际值。在它们相等的情况下,返回哪个值都没有关系。

【讨论】:

【参考方案3】:

请记住,交互式命令行并不是唯一调用方法的地方。方法也可以被其他方法调用,在这种情况下print 不是在它们之间传递数据的可用方式

【讨论】:

【参考方案4】:

对于更复杂的计算,您需要返回中间值。例如:

print minimum(3, maximum(4, 6))

在这种情况下,您不能让maximum 打印其结果。

【讨论】:

print minimum(3, maximum(4, 4)) 在 OP 版本中不起作用 :-( @eumiro:这不正是 RichieHindle 回答的重点吗? @Tim:Richie 的示例适用于第二个 OP 版本。我的不是。【参考方案5】:

如果您需要保存打印值,您会怎么做? Have a look at good explanation in docs 和参看:

>>> def ret():
    return 42

>>> def pri():
    print(42)


>>> answer = pri()
42
>>> print(answer)         # pri implicitly return None since it doesn't have return statement
None
>>> answer = ret()
>>> answer
42

它也与任何其他语言的return 语句没有什么不同。

【讨论】:

以上是关于python中返回和打印之间的区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python - 打印输出时,和+之间的区别

python中返回列表和元组之间的区别[重复]

python中print()内,字符串相加‘,’和‘+’有啥区别?

“导入 X”和“从 X 导入 *”之间的区别? [复制]

python学习——print和return的区别

这个 C++ 函数和 Python 函数之间的区别