The return statement is only capable of returning one object, sorry for the disappointment. But the object returned can literally be of any valid  type, this means that we can also return collections of items such as lists, tuples etc.

We can simulate the return statement to look like it is returning multiple values by returning the values as a tuple.

ExampleEdit & Run
def sumprod(a, b):
    """Returns sum and the product of a and b."""
    sum = a + b
    prod = a * b
    return (sum, prod)

s, p = sumprod(5, 6)
print(s)
print(p)
copy
Output:
11 30 [Finished in 0.010596418753266335s]

Brackets in tuples are optional

Remember that the parentheses around  tuple elements are optional, this makes the return statement look like it is actually returning multiple values. You should, however, remember to unpack the returned values into variables when calling the function. 

ExampleEdit & Run
def sumprod(a, b):
    """Returns sum and the product of a and b."""
    sum = a + b
    prod = a * b
    return sum, prod

s, p = sumprod(5, 6)
print(s)
print(p)
copy
Output:
11 30 [Finished in 0.009852283168584108s]

The above snippet is from the previous example but without including brackets in the return values. Let us see one last example.

ExampleEdit & Run
def min_max(nums):
    """Returns the minimum and maximum numbers in a sequence such as list."""
    minimum = nums[0]
    maximum = nums[0]
    for num in nums:
        if num < minimum:
            minimum = num
        elif num > maximum:
            maximum = num
    return minimum, maximum

a, b = min_max([7, 9, 11, 0, -1, 3, 5, 2, 8, 10])
print(a)
print(b)
copy
Output:
-1 11 [Finished in 0.010455735959112644s]

You can also use  a list or any other capable object instead of a  tuple to return multiple values. However, tuples are generally more efficient and lightweight, making them more suited in this case. The fact that we can also use tuples without the enclosing brackets also makes them look more suited in returning multiple values.