Why does this Python function only have one output?

和自甴很熟 提交于 2019-12-14 03:35:43

问题


I have this very simple Python function, but there is one part I am confused about. The function is called bigger and it takes two numbers as inputs and outputs the bigger number. (I could only use if statements, no elses)

Here's the code:

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

I would think that this code would return y if y is bigger (which it does), but it would return x and y if x is bigger (it only returns x). Why does it only return one output? Can Python functions only have one output?


回答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



回答2:


The return statement not only returns a value, but also terminates the current function and returns control to the calling function. So, this function will only return a single value. In my opinion it would be slightly more clear to write this:

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

but the result would not differ.




回答3:


Python functions can only return one value. It would be possible to return both x and y as a tuple, but the way this function is set up, it will return a single value and then exit the function.




回答4:


In a Python function, when a return statement is encountered, execution of that function is terminated. Execution context then goes back to the context that called the function.

So, even though you see two return statements, if that first one is encountered (as a result of x being bigger than y), nothing else in the function runs.

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




回答5:


Try this

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

This way it will return x and y if x is bigger, but y if y is bigger. I assume this was your question?

The reason for this is that return gives back that 1 value, then exits the function. So it would leave the function bigger(x,y) as soon as it hits that return. If you want to return both x and y, you can do so with a tuple, list, whatever you want, as I did with a tuple.




回答6:


Python functions only returns one value.

You can try,

def bigger(x, y):

    #this is optional: value = None
    if x > y:
        value = x
    else:
        value = y
    return value


来源:https://stackoverflow.com/questions/27736178/why-does-this-python-function-only-have-one-output

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!