Два появляются делать подобные вещи, но совершенно разные.
В большинстве случаев вы будете использовать return в качестве выхода для функции. Использование печати подразумевает только следующее: печать чего-то как строки (возможно, в файл или интерпретатор и т. Д.).
Кроме того, вы ничего не можете сделать со значением, напечатанным функцией. Возврат значения дает вам больше в этом отношении, поскольку это не «сбор мусора», как печатная ценность.
Возврат также позволяет вам выйти из функции.
>>> def x(y):
... squared = y ** 2
... return squared
...
>>> x(2)
4
>>> z = x(2)
>>> z
4
>>> def a(b):
... squared = b ** 2
... print(squared)
...
>>> a(2)
4
>>> c = a(2)
4
>>> c
>>>
В этом примере у меня есть две функции: x и a. Оба берут один позиционный аргумент и либо возвращают, либо печатают, что оценено в квадрате.
Обратите внимание, что если я назначу функцию аргументом переменной, я могу вернуть это значение, вызвав переменную с функцией, возвращающей значение, но не с функцией печати значения.