我正在玩f字符串(请参阅PEP 498),因此我决定检查f字符串解析(例如f“ {1}”)的速度与通常的str解析(例如str(1) ))。但是令我惊讶的是,当我使用timeit函数检查两种方法的速度时,我发现
>>> from timeit import timeit
>>> timeit("f'{1}'")
0.1678762999999961
Run Code Online (Sandbox Code Playgroud)
而
>>> timeit("str(1)")
0.3216999999999999
Run Code Online (Sandbox Code Playgroud)
甚至是repr func,在大多数情况下,它们都比str转换快
>>> timeit("repr(1)")
0.2528296999999995
Run Code Online (Sandbox Code Playgroud)
我不知道为什么呢?我以为f弦在内部调用了str,但是现在,我有点困惑了,有什么想法吗?提前致谢!
PD:就像有人想知道的那样:
assert f"{1}" == str(1) == repr(1)
Run Code Online (Sandbox Code Playgroud)