以下代码在cpython中做了什么

What does the following code do in cpython

我正在学习 cpython 内部结构(尤其是 is 运算符)并在 ceval.c

中遇到了 IS_OP 的以下操作码实现
case TARGET(IS_OP): {
   PyObject *right = POP();
   PyObject *left = TOP();
   int res = (left == right)^oparg;
   PyObject *b = res ? Py_True : Py_False;
   ...
}

我知道前两个语句从堆栈中弹出操作数。

PyObject *right = POP();
PyObject *left = TOP();

但我的问题与下面的说法有关。

int res = (left == right)^oparg;

根据我的理解,python 中的 is 运算符比较对象标识,在其他团队中,它会检查两个对象是否指向同一个对象。所以我的问题是,只有下面的代码足以检查 object identity?,为什么实际实现再次应用 exlcusive OR(^) 和 oparg?

int res = (left == right)

IS_OP操作码用于isis not。当 oparg1(对于 is not)时,^oparg 翻转比较结果,而当它为 0(对于 is ), 因此相同的字节码可以通过调整 oparg 无分支地处理这两种情况(在 dis 输出中,isIS_OP 0is notIS_OP 1).