【问题标题】:python ipow : how to use the third argument?python ipow:如何使用第三个参数?
【发布时间】:2014-10-31 22:07:27
【问题描述】:

在数据模型部分的官方python文档中,__ipow__ method定义为:

object.__ipow__(self, other[, modulo])

然后,文档解释说 调用这些方法来实现增强的算术分配**= for __ipow__

但是允许使用modulo 参数的**= 的语法是什么?

【问题讨论】:

    标签: python operator-overloading


    【解决方案1】:

    第三个参数只是为了与__pow__对称。

    该参数包含在原始 'add in-place operator equivalents' commit 中,但不支持从 Python 代码中使用它,除了直接调用 __ipow__ 方法

    例如,INPLACE_POWER 操作码将passes in 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__ 的别名。

    【讨论】:

    • 这是一个奇怪的设计选择。从文档中删除第三个参数会更简单,但无论如何,感谢您的明确回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多