@ion_killah, in general, it’s probably considered better form to omit the parentheses with **return**. Since **return** is not a function, they are not required, and the (definite, but not overwhelming) preference seems to be to omit them.

**return** can evaluate and return a sequence, called a **tuple**, of expressions.

If you have not yet studied the **tuple** data type, it is a data type consisting of a s*equence of items separated by commas*. By default, Python *prints* tuples surrounded by parentheses, leading people to suppose that parentheses are required, *but they are not*, unless it’s necessary to place them to avoid ambiguity (for instance, if the tuple contains mathematical expressions requiring parentheses.)

```
# cool things you can do with tuples
t = 5, 7 # tuple packing
print(t)
print(t[0], t[1]) # the print function can take a tuple as an argument
a, b = t # tuple unpacking
print(a)
print(b)
print("*******")
# Here is a function with multiple expressions in the return statement: a tuple
def sq_cube_fourth(x):
return x**2, x**3, x**4
q = sq_cube_fourth(5) # call the function
print(q) # this will be a tuple
r, s, t = q # now let's unpack it
print(r)
print(s)
print(t)
''' Output:
(5, 7) # Python adds parentheses
5 7
5
7
*******
(25, 125, 625) # again with the parentheses
25
125
625
```

There are other rules, the most important being that you can’t change the items within a tuple, as you can with lists. As with strings, if you need to change something, you must build a new tuple.