【发布时间】:2019-10-28 11:30:24
【问题描述】:
我在玩 f-strings(请参阅PEP 498),我决定检查 f-string 解析的速度(例如 f"{1}")与通常的 str 解析(例如 str(1))相比)。但令我惊讶的是,当我使用timeit 函数检查这两种方法的速度时,我发现
f-strings 更快。
>>> from timeit import timeit
>>> timeit("f'{1}'")
0.1678762999999961
而
>>> timeit("str(1)")
0.3216999999999999
甚至是 repr func,在大多数情况下比 str cast 更快
>>> timeit("repr(1)")
0.2528296999999995
我想知道这是为什么?我以为 f 字符串在内部调用 str ,但现在,我有点困惑,有什么想法吗?提前致谢!
PD:如果有人想知道:
assert f"{1}" == str(1) == repr(1)
【问题讨论】:
-
这类似于为什么 [] 比 list() 快。
标签: python python-3.x python-internals f-string