python何时编译常量字符串,将常量字符串组合成一个常量字符串

Dre*_*puf 5 python

In [9]: dis.disassemble(compile("s = '123' + '456'", "<execfile>", "exec"))
  1           0 LOAD_CONST               3 ('123456')
              3 STORE_NAME               0 (s)
              6 LOAD_CONST               2 (None)
              9 RETURN_VALUE 
Run Code Online (Sandbox Code Playgroud)

我想知道,python何时将常量字符串组合为CONST.如果可以通过,请告诉我在cpython(无论是2.x,3.x)的相关源代码.

Ray*_*ger 9

只要组合字符串不超过20个字符,就会发生这种情况.

优化发生在窥视孔优化器中.请参阅Python/peephole.c中 fold_binops_on_constants()函数中的第219行:http: //hg.python.org/cpython/file/cd87afe18ff8/Python/peephole.c#l149

  • 我写了Python的窥视孔优化器:-) (5认同)
  • 互联网并不令人惊讶......中国的随意人员对该语言的惊人细节进行了模糊的询问.负责该行为的家伙在15分钟内就可以得到答案,直到行号. (5认同)
  • 请注意,如果我问每个人如何想出20长的数字,@ RaymondHettinger? (2认同)