Powracanie Brak lub krotka i rozpakowanie

Zawsze mnie to denerwuje:

$ cat foo.py
def foo(flag):
    if flag:
        return (1,2)
    else:
        return None

first, second = foo(True)
first, second = foo(False)

$ python foo.py
Traceback (most recent call last):
  File "foo.py", line 8, in <module>
    first, second = foo(False)
TypeError: 'NoneType' object is not iterable

Faktem jest, że aby poprawnie rozpakować bez kłopotów, muszę albo złapać błąd TypeError, albo mieć coś takiego

values = foo(False)
if values is not None:
    first, second = values

Co jest trochę denerwujące. Czy istnieje jakiś sposób na poprawę tej sytuacji (np. Aby ustawić zarówno pierwszy, jak i drugi na Brak bez zwracania foo (None, None)) lub sugestię dotyczącą najlepszej strategii projektowania dla przypadków takich jak ta, którą przedstawiam? * może zmienne?

questionAnswers(9)

yourAnswerToTheQuestion