mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Added __pow__(a,b) to the operator module. Completes the pattern of
all operators having a counterpart in the operator module. Closes SF bug #577513.
This commit is contained in:
parent
7dca21e59f
commit
5959c559df
3 changed files with 23 additions and 0 deletions
|
@ -131,6 +131,11 @@ Return the bitwise or of \var{a} and \var{b}.
|
|||
Return \var{o} positive.
|
||||
\end{funcdesc}
|
||||
|
||||
\begin{funcdesc}{pow}{a, b}
|
||||
\funcline{__pow__}{a, b}
|
||||
Return \var{a} \code{**} \var{b}, for \var{a} and \var{b} numbers.
|
||||
\end{funcdesc}
|
||||
|
||||
\begin{funcdesc}{rshift}{a, b}
|
||||
\funcline{__rshift__}{a, b}
|
||||
Return \var{a} shifted right by \var{b}.
|
||||
|
@ -310,6 +315,8 @@ symbols in the Python syntax and the functions in the
|
|||
{\code{invert(\var{a})}}
|
||||
\lineiii{Bitwise Or}{\code{\var{a} | \var{b}}}
|
||||
{\code{or_(\var{a}, \var{b})}}
|
||||
\lineiii{Exponentiation}{\code{\var{a} ** \var{b}}}
|
||||
{\code{pow(\var{a}, \var{b})}}
|
||||
\lineiii{Indexed Assignment}{\code{\var{o}[\var{k}] = \var{v}}}
|
||||
{\code{setitem(\var{o}, \var{k}, \var{v})}}
|
||||
\lineiii{Indexed Deletion}{\code{del \var{o}[\var{k}]}}
|
||||
|
|
|
@ -161,6 +161,12 @@ class OperatorTestCase(unittest.TestCase):
|
|||
self.failUnless(operator.pos(0) == 0)
|
||||
self.failUnless(operator.pos(-0) == 0)
|
||||
|
||||
def test_pow(self):
|
||||
self.failUnless(operator.pow(3,5) == 3**5)
|
||||
self.failUnless(operator.__pow__(3,5) == 3**5)
|
||||
self.assertRaises(TypeError, operator.pow, 1)
|
||||
self.assertRaises(TypeError, operator.pow, 1, 2, 3)
|
||||
|
||||
def test_repeat(self):
|
||||
a = range(3)
|
||||
self.failUnless(operator.repeat(a, 2) == a+a)
|
||||
|
|
|
@ -101,6 +101,15 @@ spamrc(op_ne , Py_NE)
|
|||
spamrc(op_gt , Py_GT)
|
||||
spamrc(op_ge , Py_GE)
|
||||
|
||||
static PyObject*
|
||||
op_pow(PyObject *s, PyObject *a)
|
||||
{
|
||||
PyObject *a1, *a2;
|
||||
if (PyArg_ParseTuple(a,"OO:pow",&a1,&a2))
|
||||
return PyNumber_Power(a1, a2, Py_None);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static PyObject*
|
||||
op_getslice(PyObject *s, PyObject *a)
|
||||
{
|
||||
|
@ -199,6 +208,7 @@ spam2(setitem,__setitem__,
|
|||
"setitem(a, b, c) -- Same as a[b] = c.")
|
||||
spam2(delitem,__delitem__,
|
||||
"delitem(a, b) -- Same as del a[b].")
|
||||
spam2(pow,__pow__, "pow(a, b) -- Same as a**b.")
|
||||
spam2(getslice,__getslice__,
|
||||
"getslice(a, b, c) -- Same as a[b:c].")
|
||||
spam2(setslice,__setslice__,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue