in-place exponentiation incongruities
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Sun Aug 12 00:28:10 EDT 2012
On Sat, 11 Aug 2012 09:54:56 -0700, Giacomo Alzetta wrote:
> I've noticed some incongruities regarding in-place exponentiation.
>
> On the C side nb_inplace_power is a ternary function, like nb_power (see
> here:
> http://docs.python.org/c-api/typeobj.html?
highlight=numbermethods#PyNumberMethods).
>
> Obviously you can't pass the third argument using the usual in-place
> syntax "**=". Nevertheless I'd expect to be able to provide the third
> argument using operator.ipow. But the operator module accept only the
> two parameter variant.
Why? The operator module implements the ** operator, not the pow()
function. If you want the pow() function, you can just use it directly,
no need to use operator.pow or operator.ipow.
Since ** is a binary operator, it can only accept two arguments.
> The Number Protocol specify that the ipow operation ""is the equivalent
> of the Python statement o1 **= o2 when o3 is Py_None, or an in-place
> variant of pow(o1, o2, o3) otherwise.""
Where is that from?
--
Steven
More information about the Python-list
mailing list