为什么str()+“”比“” +“”慢

时间:2020-09-09 18:52:26

标签: python

我想知道python中创建空字符串以在以后附加更多字符串的最快方法是什么。但是,我发现有趣的是,通过""初始化字符串比str()更快。有人可以照亮吗?我想str()会带来很多麻烦,例如类型检查等。

这是我尝试过的:

%timeit ""+"a"
7.63 ns ± 0.0376 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)

%timeit str()+"a"
58.2 ns ± 0.253 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

1 个答案:

答案 0 :(得分:11)

因为调用一个函数需要查找并调用该函数。 "" + "a"可以解释为"a"。使用dis

>>> import dis
>>> dis.dis("str() + 'a'")
  1           0 LOAD_NAME                0 (str)
              2 CALL_FUNCTION            0
              4 LOAD_CONST               0 ('a')
              6 BINARY_ADD
              8 RETURN_VALUE
>>> dis.dis("'' + 'a'")
  1           0 LOAD_CONST               0 ('a')
              2 RETURN_VALUE