不是
总是
比较匹配字符串的速度更快。相反,比较共享相同id的字符串总是更快。身份确实是这种行为的原因(正如@S3DEV精辟地解释的那样)的一个证明是:
>>> x = 'toto'
>>> y = 'toto'
>>> z = 'totoo'[:-1]
>>> w = 'abcd'
>>> x == y
True
>>> x == z
True
>>> x == w
False
>>> id(x) == id(y)
True
>>> id(x) == id(z)
False
>>> id(x) == id(w)
False
>>> timeit.timeit('x==y', number=100000000, globals={'x': x, 'y': y})
3.893762200000083
>>> timeit.timeit('x==z', number=100000000, globals={'x': x, 'z': z})
4.205321462000029
>>> timeit.timeit('x==w', number=100000000, globals={'x': x, 'w': w})
4.15288594499998
比较具有相同id的对象总是更快(正如您从示例中注意到的,比较
x
和
z
相比于
十、
和
y
,那是因为
十、
和
Z
不要共享相同的id)。