Разделение по белому пространству можно сделать двумя способами: 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
не указывают ничего полезного, поэтому почему это происходит?