2014-10-31 17 views
3

在数据模型部分Python官方文件中,__ipow__ method定义为:python ipow:如何使用第三个参数?

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

然后,文档解释这些方法称为实现增强算术分配**=__ipow__

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

+0

这不是特定于Python 3,所以我删除了标签。 – 2014-10-31 22:23:58

回答

2

第三个参数只是为了与__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; 

最有可能它的存在使实施__ipow____pow__甚至从C代码琐碎的别名。

+0

这适用于'__pow__',但我的问题是'__ipow__' – Xoff 2014-10-31 22:14:06

+0

@Xoff:是的,对不起,错过了。 – 2014-10-31 22:21:12

+0

这是一个奇怪的设计选择。从文档中删除第三个参数会更简单,但无论如何,感谢您的明确答案! – Xoff 2014-10-31 22:24:48

相关问题