Why nesting of function within print() fn. is printing 'none' in output | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
0

Why nesting of function within print() fn. is printing 'none' in output

----------------- def mf(): print('rt\n'*2) print(mf()) Output:- rt rt none ---------------v/s def mf(): print('rt\n'*2) mf() Output:- rt rt -------------- What is the difference between the two? Why 'none' is being printed as an output in first one?

10th Jul 2019, 3:58 AM
TANMAY HARSH
TANMAY HARSH - avatar
5 Answers
+ 2
Try it like this: def mf(): return 'rt\n'*2 print(mf()) it is usually better in functional programming to avoid side effects in a function. If the function's purpose is to figure out a value, using any parameters, then that value should be returned, and you can do the printing from the main program where the function is called. If the function's purpose is to print something then maybe it does not need to return anything and it does not make sense to 'print' this nothing again in the main program. This distincrion is much clearer in purely OOP languages where you must declare the return type as 'void' if your function doesn't return any value. Python is much more forgiving with this, and that can confuse beginners.
10th Jul 2019, 6:12 AM
Tibor Santa
Tibor Santa - avatar
+ 1
Thanks Tibor Santa
10th Jul 2019, 8:38 AM
TANMAY HARSH
TANMAY HARSH - avatar
0
because the first one try to print the value returned by the print(). and i think it print none, because the print function is not return anything
10th Jul 2019, 4:04 AM
Taste
Taste - avatar
0
Please elaborate... as I have worked on similar type of code where a function was created to get price of some item from a website (let say that fn. be get_price() ) and when I used print(get_price()) (depending on whether the user wants to see the price or not) then nothing like this(printing 'none' at end) happened.....
10th Jul 2019, 4:19 AM
TANMAY HARSH
TANMAY HARSH - avatar
0
https://docs.python.org/3/library/functions.html#print you can see, the print function also accept None as the parameter. and also it doenst return anything, that means no value. and None is actually an object that usually used to represent the absence of a value. ( https://docs.python.org/3.2/library/constants.html )
10th Jul 2019, 4:28 AM
Taste
Taste - avatar