python ipow:如何使用第三个参数?
在官方的Python文档中,数据模型部分提到,__ipow__
方法是这样定义的:
object.__ipow__(self, other[, modulo])
接着,文档解释说,这些方法是用来实现增强的算术赋值(对于__ipow__
来说就是**=
)
但是,**=
的语法是什么,才能使用modulo
参数呢?
1 个回答
3
第三个参数的存在主要是为了和 __pow__
保持一致。
这个参数最初是在一个提交中加入的,目的是为了“添加就地操作符的等价物”,但在Python代码中并没有办法使用它,除了直接调用 __ipow__
方法。
举个例子,处理 INPLACE_POWER
操作码时,第三个参数传入的是 None
:
case INPLACE_POWER:
w = POP();
v = TOP();
x = PyNumber_InPlacePower(v, w, Py_None);
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
if (x != NULL) continue;
break;
很可能这个参数的存在是为了让在C代码中实现 __ipow__
作为 __pow__
的别名变得简单。