[Python-Dev] Why is nb_inplace_power ternary?
"Martin v. Löwis"
Martin.vonLoewis at hpi.uni-potsdam.de
Fri Feb 9 09:38:56 CET 2007
Brett Cannon schrieb:
> Seems reasonable to me. Is the argument of None passed in
> automatically somewhere?
There are few callers of nb_inplace_power at all (AFAICT, only
PyNumber_InPlacePower); in turn, PyNumber_InPlacePower is called
with the implicit Py_None always:
- ceval.c, for INPLACE_POWER (which is binary)
- operator.ipow (which is also binary)
- class.c, from bin_inplace_power, which in turn is called from
instance_ipow if the instance's 3rd argument to
nb_inplace_power is Py_None (if there is a non-None third
argument, instance_ipow invokes __ipow__ with three arguments
if __ipow__ is defined, else it invokes __pow__ with three
arguments)
The only case I could find where a third argument is non-None
is when the builtin pow() is invoked, which then invokes nb_power
(but not nb_inplace_power) with three arguments.
Regards,
Martin
More information about the Python-Dev
mailing list