What is the formal difference between "print" and "return" in Python?

I’m trying to understand the formal difference between the print statement and the return statement in Python. Although I have a basic understanding of their functionalities, I’m unsure about their specific roles and implications.

Here’s a simple example to illustrate my question:

def multiply(a, b):
    result = a * b
    return result

In the above code, the multiply function takes two arguments, a and b, multiplies them, and stores the result in the result variable. It then prints the result using print(result) and returns the same value using return result.

My understanding is that print displays the value on the console, while return passes the value back to the caller. However, I’m unsure about the formal differences between the two and when to use each one appropriately.

I would appreciate it if someone could explain the formal differences between print and return in Python and provide guidance on when to use one over the other. Additionally, if there are any specific scenarios or best practices related to their usage, I would like to learn about them. Thank you for your help!