开发者

Difference between returns and printing in python? [duplicate]

This question already has answers here: 开发者_如何学Go What is the purpose of the return statement? How is it different from printing? (15 answers) Closed 7 years ago.

In python I don't seem to be understanding the return function. Why use it when I could just print it?

def maximum(x, y):
    if x > y:
        print(x)
    elif x == y:
        print('The numbers are equal')
    else:
        print(y)

maximum(2, 3)

This code gives me 3. But using return it does the same exact thing.

def maximum(x, y):
    if x > y:
        return x
    elif x == y:
        return 'The numbers are equal'
    else:
        return y

print(maximum(2, 3))

So what's the difference between the two? Sorry for the mega noob question!


The Point

return is not a function. It is a control flow construct (like if else constructs). It is what lets you "take data with you between function calls".

Break down

  • print: gives the value to the user as an output string. print(3) would give a string '3' to the screen for the user to view. The program would lose the value.

  • return: gives the value to the program. Callers of the function then have the actual data and data type (bool, int, etc...) return 3 would have the value 3 put in place of where the function was called.

Example Time

def ret():
    return 3

def pri():
    print(3)

4 + ret() # ret() is replaced with the number 3 when the function ret returns
# >>> 7
4 + pri() # pri() prints 3 and implicitly returns None which can't be added
# >>> 3
# >>> TypeError cannot add int and NoneType


What would you do if you need to save printed value? Have a look at good explanation in docs and cf.:

>>> def ret():
    return 42

>>> def pri():
    print(42)


>>> answer = pri()
42
>>> print(answer)         # pri implicitly return None since it doesn't have return statement
None
>>> answer = ret()
>>> answer
42

It also is no different from return statement in any other language.


For more complex calculations, you need to return intermediate values. For instance:

print minimum(3, maximum(4, 6))

You can't have maximum printing its result in that case.


Remember that the interactive command line isn't the only place methods will be called from. Methods can also be called by other methods, and in that case print isn't a usable way to pass data between them


Honestly, it depends on what you need the function to do. If the function specification state that it will print out max term, then what you have is fine. What generally happens for a method like this is that the method should return the actual value which is larger. In the case they are equal, it doesn't matter which value is returned.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜