【发布时间】:2013-12-16 15:24:14
【问题描述】:
在 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() 更快。为什么?
【问题讨论】:
-
@GamesBrainiac 这个问题是关于相反的观察。
-
旁白:使用
setup的目的是确保您只对您感兴趣的内容进行计时。如果您想设置a+ 的时间,而不是获取长度,那很好,但你根本不需要setup。 -
如果长度不变,需要多次查找,则将其存储为整数
n = len(a),并使用n。