在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))
那两者有什么区别?对不起,这是一个巨大的菜鸟问题!
答案 0 :(得分:23)
The Point
返回不是一个功能。它是一个控制流构造(如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
答案 1 :(得分: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
语句没有区别。
答案 2 :(得分:4)
对于更复杂的计算,您需要返回中间值。例如:
print minimum(3, maximum(4, 6))
在这种情况下,您无法maximum
打印其结果。
答案 3 :(得分:4)
请记住,交互式命令行不是唯一可以调用方法的地方。方法也可以通过其他方法调用,在这种情况下print
不是在它们之间传递数据的可用方法
答案 4 :(得分:0)
老实说,这取决于你需要做什么功能。如果函数规范声明它将打印出最大术语,那么你所拥有的就好了。对于这样的方法通常会发生的是该方法应该返回更大的实际值。在它们相同的情况下,返回哪个值无关紧要。