Raising error or returning None
There is no universal rule and this particular decision is use-case specific. Note that there are other options as well, like returning -1 for an empty list.

If we consider that max() naturally does not work with empty sequences:

In [1]: max([])
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
&lt;ipython-input-4-8d2766aecf92&gt; in &lt;module&gt;()
----&gt; 1 max([])

ValueError: max() arg is an empty sequence


Then, throwing an error makes more sense in this particular situation. If you do so, you can empower your docstring with a doctest:

def poker(hands):
    """
    Returns the best hand from a list of hands.

        Parameters:
            hands: list

        Example:
            poker(hands) =&gt; hands

    Raises a ValueError in case of empty list of hands:

    &gt;&gt;&gt; poker([])
    Traceback (most recent call last):
      ...
    ValueError: Empty list of hands.
    """
    if not hands:
        raise ValueError("Empty list of hands.")

    return max(hands, key=hand_rank)