Разделение по белому пространству можно сделать двумя способами: str.strip. Вы можете либо выдать вызов без аргументов, str.strip(), который по умолчанию использует разделитель белого пространства или явно предоставляет аргумент str.strip(' ').
Но почему это так, когда эти функции выполняются по-разному?
Используя примерную строку с преднамеренным количеством пробелов:
s = " " * 100 + 'a' + " " * 100
Тайминги для s.strip() и s.strip(' ') равны соответственно:
%timeit s.strip()
The slowest run took 32.74 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 396 ns per loop
%timeit s.strip(' ')
100000 loops, best of 3: 4.5 µs per loop
strip принимает 396ns, а strip(' ') принимает 4.5 μs, аналогичный сценарий присутствует с rsplit и lsplit при тех же условиях. Кроме того, bytes objects, похоже, тоже будут затронуты.
Тайминги выполнялись для Python 3.5.2, на Python 2.7.1 разница была менее резкой. docs на str.split не указывают ничего полезного, поэтому почему это происходит?