2015-01-02 95 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 
相關問題