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 不是函数。它是一个控制流构造(如if
else
构造)。这就是让您“在函数调用之间随身携带数据”的原因。
分解
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中返回和打印之间的区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章