2010-10-07 102 views
7

在python中,我似乎没有理解返回函数。为什么在打印时使用它?返回和打印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。但使用返回它做同样的事情。

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

print(maximum(2, 3)) 

那么两者有什么区别?对不起,这个超级noob问题!

回答

10

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

>>> 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声明,任何其他语言没有什么不同。

4

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

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

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

+0

'打印最低(3,最大的(4,4))'不OP的版本工作:-( – eumiro 2010-10-07 12:12:33

+0

@eumiro:是不是完全RichieHindle的答案是什么? – 2010-10-07 12:38:21

+0

@Tim:Richie的例子适用于第二个OP的版本。我的不是。 – eumiro 2010-10-07 12:41:36

4

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

0

说实话,这取决于你需要的功能。如果函数规范声明它将打印出最大期限,那么你拥有的是好的。对于像这样的方法通常会发生的是该方法应该返回更大的实际值。在它们相等的情况下,返回哪个值并不重要。

22

的点

回报是不是一个函数。它是一个控制流程构造(如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 
相关问题