2015-01-02 65 views
-2

我有这个非常简单的Python函数,但有一部分我很困惑。该功能被称为更大,它需要两个数字作为输入并输出更大的数字。 (我只能if语句使用,没有别人的)为什么这个Python函数只有一个输出?

下面的代码:

def bigger(x, y): 
    if x > y: 
     return x 
    return y 

我认为这个代码将返回y如果y较大(其中它),但它会返回xy如果x更大(它只返回x)。为什么它只返回一个输出? Python函数只能有一个输出吗?

+0

如果y较大它返回年。 – GLHF

+2

还原函数。 – Ron

+0

函数每次调用时只能返回一次。 – BrenBarn

回答

1
def bigger(x, y): 
    if x > y: 
     # when x>y, x will be returned and 'return y' in the last line will not be executed. 
     return x 
    # only if x<y, this line will be executed. 
    return y 
1

Python函数只能返回一个值。将x和y作为元组返回是可能的,但是这个函数的设置方式,它将返回一个值,然后退出该函数。

3

return声明不仅返回一个值,也终止当前的功能和控制权返回给调用函数。所以,这个函数只会返回一个值。在我看来,这会写得更清楚些:

def bigger(x, y): 
    if x > y: 
     return x 
    else: 
     return y 

但结果不会有差别。

+0

是的,我认为这是误会。 'return'在大多数语言中都是一样的 - 一旦你点击它,函数就结束了,并且控制权返回到调用它的函数。我认为有一些语言将信息传递给调用者的概念(返回值)和终止函数的概念(返回控制)是分开的,但Python不是其中之一。 –

0

你的逻辑基本上是这样的:

  1. 如果X大于Ÿ,然后返回X

  2. 如果1没有通过(X没有如果是的话,我们不会在这里,因为当你从一个函数返回一个值时,你实际上是将这个值和程序的控制权交给了函数的调用者) ,返回ÿ

如果你想返回Xÿ,如果X大Ÿ,那么你可以返回一个元组:

if x > y: 
    return (x, y) # brackets are not necessary 
0

试试这个

def bigger(x, y): 
if x > y: 
    a=(x,y) 
    # or a=[x,y] 
    return a 
return y 

这样,如果x更大,它将返回x和y,但如果y更大,则返回y。我认为这是你的问题?

这样做的原因是返回返回1值,然后退出函数。因此,一旦它达到该返回值,它将使函数 更大(x,y)。如果你想返回x和y,你可以使用元组,列表,无论你想要什么,就像我使用元组一样。

+0

你不需要在变量中存储'x'和'y',然后返回它。看到我的答案。 – nbro

+0

这是真的,我只是试图通过赋值给一个变量来简单明了。 – CyanogenCX

1

在Python函数中,当遇到return语句时,该函数的执行被终止。执行上下文然后返回到调用该函数的上下文。

因此,即使看到两个return语句,如果遇到第一个语句(由于x比y大),函数中没有任何其他语句会运行。

https://docs.python.org/2/reference/simple_stmts.html#return

0

Python函数仅返回一个值。

你可以试试,

def bigger(x, y): 

    #this is optional: value = None 
    if x > y: 
     value = x 
    else: 
     value = y 
    return value 
相关问题