I really like the idea of assigning to null - but it does have an unexpected side-effect:
>>> print divmod(5, 3)
(1, 2)
>>> x, null = divmod(5, 3)
>>> print null
2
For those who code mostly in Python, this is probably not an issue: null should be just as much a junk value as _.
However, if you're switching between other languages like Javascript, it's entirely possible to accidentally write a comparison with null instead of None. Rather than spitting the usual error about comparing with an unknown variable, Python will just silently accept it, and now you're getting true and false conditions that you totally don't expect... this is the sort of error where you stare at the code for an hour and can't figure out wth is wrong, until it suddenly hits you and you feel like an idiot.
The obvious fix doesn't work, either:
>>> x, None = divmod(5, 3)
File "<stdin>", line 1
SyntaxError: cannot assign to None
...which is really disappointing. Python (and every other language on the planet) allows all of the parameters to be implicitly thrown away, regardless of how many variables are returned:
>>> divmod(5, 3)
...but explicitly throwing away parameters by assigning them to None isn't allowed?
It feels kind of stupid of the Python interpreter to characterize assigning to None as a syntax error, rather than an intentional choice with an unambiguous result. Can anyone think of a rationale for that?