В Python len
- это функция, чтобы получить длину коллекции, вызвав метод __len__
:
def len(x):
return x.__len__()
Поэтому я ожидал бы, что прямой вызов __len__()
будет по крайней мере таким быстрым, как len()
.
import timeit
setup = '''
'''
print (timeit.Timer('a="12345"; x=a.__len__()', setup=setup).repeat(10))
print (timeit.Timer('a="12345"; x=len(a)', setup=setup).repeat(10))
Но результаты тестирования с приведенным выше кодом показывают, что len()
будет быстрее. Зачем?