为什么使用打印不起作用,而使用返回却起作用?
我想输出更大的数字:
def bigger(x,y):
if x<y:
return y
return x
print bigger(2,7)
它打印出来:
7
def bigger(x,y):
if x<y:
print y
print x
print bigger(2,7)
它打印出来:
7
没有任何
为什么使用打印不起作用,而使用返回却起作用?
我想输出更大的数字:
def bigger(x,y):
if x<y:
return y
return x
print bigger(2,7)
它打印出来:
7
def bigger(x,y):
if x<y:
print y
print x
print bigger(2,7)
它打印出来:
7
没有任何
为什么使用打印不起作用,而使用返回却起作用?
有用。如果函数没有 return 语句,则该函数返回一个None
. 在第二种情况下,您只需打印它。
您没有使用Python 的内置 max有什么特别的原因吗?
None
如果未指定显式返回值,则函数会隐式返回。因此,在您的第二个示例中,您正在打印一个不返回任何内容的函数的结果。虽然函数本身已经在打印结果。
你的第一个版本是正确的,应该使用什么版本。
这是您在第一种情况下看到的演示:
>>> def f1(): return 7
...
>>> print f1()
7
这是您在第二种情况下看到的演示:
>>> def f2(): pass
...
>>> print f2()
None
如果您希望使第一个函数更简洁,请使用以下形式:
>>> def bigger(x,y):
... return x if x>y else y
...
>>> print bigger(2,7)
7
或者只使用具有返回序列最大值的优点的builin max(如评论中所述):
>>> max([1,2,3,4,5,6,7])
7
>>> max('abcdefg')
'g'
或者做一些类似数据元素的最大元素的事情,比如元组的第二个整数:
>>> max([(100,2),(50,7)], key=lambda x: x[1])
(50, 7)
在第一种情况下,您从函数返回值然后打印它 - 所以您有一个输出。在第二种情况下,您在函数内部打印值,然后尝试从不返回任何内容的函数打印输出 - 因此它首先打印值,然后打印空返回。