Why Does This Python Function Only Have One Output?
Solution 1:
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.
Solution 2:
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
Solution 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.
Solution 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
Solution 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.
Post a Comment for "Why Does This Python Function Only Have One Output?"