Thats a very good question.
Fortunately, the answer is VERY simple.
You see, A return statement is used to end the execution of the function call and “returns” the result (value of the expression following the return keyword) to the caller. The statements after the return statements are not executed. If the return statement is without any expression, then the special value None is returned.
On the other hand, print() is an INBUILT function in Python, originally written in C. So what that means is, it runs the program and outputs whatever is required it to do - in this case literally output what the user wants it to.
In other words, an if-else or a loop must return some value. in case nothing is mentioned, Python is smart enough to return None.