В чём ключевое различие между return x ** 2 и print(x ** 2) внутри функции?
return x ** 2
print(x ** 2)
Обе инструкции автоматически сохраняют значение в глобальной переменной.
Они всегда оказывают на вызывающий код совершенно одинаковое действие.
return передаёт значение вызывающему коду и завершает функцию, а print только выводит значение, и функция продолжает выполняться, если поток управления не завершён.
return
print
print возвращает выведенное значение, а return отображает его на экране.