One particular quirk of the (otherwise quite powerful) re module in Python is that re.split() will never split a string on a zero-length match, for
Basically, split() is two different functions into one. If you provide a parameter, it behaves very differently than when called without one.
At first, it would seems that
s.split() == s.split(' \t\n')
but this is not the case, as you have shown. The doc says:
[...] If sep is not specified or is None, any whitespace string is a separator and empty strings are removed from the result. [...]
Even adding a 'remove_empty' parameter it would still behave weird, because the default of 'remove_empty' depends on the 'sep' parameter being there.