小编Dav*_*ete的帖子

为什么f字符串比str()解析值快?

我正在玩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)

python python-3.x python-internals python-3.6 f-string

8
推荐指数
1
解决办法
383
查看次数