很久以前,有人告诉我
d = {}
try:
a = d['a']
# do something
except KeyError:
# do something else
比
a = d.get('a')
if a:
# do something
else:
# do something else
但是今天,我做了一个简单的测试后,发现结果恰恰相反:
import time
d = {}
n = 0
t1 = time.time()
for i in range(1000000):
try:
a = d['a']
except KeyError:
n += 1
print(time.time() - t1)
>>> 0.4676947593688965
import time
d = {}
n = 0
t1 = time.time()
for i in range(1000000):
a = d.get('a')
if a is None:
n += 1
print(time.time() - t1)
>>> 0.3045947551727295
那为什么会这样呢?在我的想象中,d.get也应该做类似的判断键是否存在于dict中的逻辑。
MM们
相关分类