0

为什么使用打印不起作用,而使用返回却起作用?

我想输出更大的数字:

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

没有任何

4

4 回答 4

4

为什么使用打印不起作用,而使用返回却起作用?

有用。如果函数没有 return 语句,则该函数返回一个None. 在第二种情况下,您只需打印它。

于 2013-05-27T16:50:37.613 回答
3

您没有使用Python 的内置 max有什么特别的原因吗?

None如果未指定显式返回值,则函数会隐式返回。因此,在您的第二个示例中,您正在打印一个不返回任何内容的函数的结果。虽然函数本身已经在打印结果。

你的第一个版本是正确的,应该使用什么版本。

于 2013-05-27T16:51:46.883 回答
3

这是您在第一种情况下看到的演示:

>>> 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)
于 2013-05-27T16:51:56.077 回答
2

在第一种情况下,您从函数返回值然后打印它 - 所以您有一个输出。在第二种情况下,您在函数内部打印值,然后尝试从不返回任何内容的函数打印输出 - 因此它首先打印值,然后打印空返回。

于 2013-05-27T16:53:10.013 回答