python ipow:如何使用第三个参数?

7 投票
1 回答
649 浏览
提问于 2025-04-30 23:20

在官方的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__ 的别名变得简单。

撰写回答