BINARY ADD和INPLACE ADD之间的区别

时间:2013-09-19 10:54:35

标签: python

我正在浏览python的dis包。我试过代码来看看它是如何工作的

>>> def get():
...     x=4
...     y=x+3 ............ this line
...     z=8
...     return y

然后运行dis.dis(get),它打印上述代码的字节码指令。

x+3字节码指令的

BINARY_ADD,当通过包文档时,我找到了另一个术语INPLACE_ADD

虽然在那里他们已经提到了什么是INPLACE_ADD,但我没有得到区别。

我有两个问题

A)。 BINARY_ADDINPLACE_ADD

之间有什么区别

B)。如何编写代码,以便字节码指令显示INPLACE_ADD

1 个答案:

答案 0 :(得分:5)

INPLACE_ADD+=运算符:

>>> from dis import dis
>>> def f():
...     x += y
...     
>>> dis(f)
  2           0 LOAD_FAST                0 (x)
              3 LOAD_GLOBAL              0 (y)
              6 INPLACE_ADD         
              7 STORE_FAST               0 (x)
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE