Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 19051:f20727cc3d0f legacy-trunk
Implement PEP 238 in its (almost) full glory.
This introduces:
- A new operator // that means floor division (the kind of division
where 1/2 is 0).
- The "future division" statement ("from __future__ import division)
which changes the meaning of the / operator to implement "true
division" (where 1/2 is 0.5).
- New overloadable operators __truediv__ and __floordiv__.
- New slots in the PyNumberMethods struct for true and floor division,
new abstract APIs for them, new opcodes, and so on.
I emphasize that without the future division statement, the semantics
of / will remain unchanged until Python 3.0.
Not yet implemented are warnings (default off) when / is used with int
or long arguments.
This has been on display since 7/31 as SF patch #443474.
Flames to /dev/null.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Wed, 08 Aug 2001 05:00:18 +0000 |
| parents | 09df3254b49d |
| children | 97a3d3d7029f |
line wrap: on
line diff
--- a/Python/ceval.c Wed Aug 08 01:30:38 2001 +0000 +++ b/Python/ceval.c Wed Aug 08 05:00:18 2001 +0000 @@ -884,6 +884,26 @@ if (x != NULL) continue; break; + case BINARY_FLOOR_DIVIDE: + w = POP(); + v = POP(); + x = PyNumber_FloorDivide(v, w); + Py_DECREF(v); + Py_DECREF(w); + PUSH(x); + if (x != NULL) continue; + break; + + case BINARY_TRUE_DIVIDE: + w = POP(); + v = POP(); + x = PyNumber_TrueDivide(v, w); + Py_DECREF(v); + Py_DECREF(w); + PUSH(x); + if (x != NULL) continue; + break; + case BINARY_MODULO: w = POP(); v = POP(); @@ -1051,6 +1071,26 @@ if (x != NULL) continue; break; + case INPLACE_FLOOR_DIVIDE: + w = POP(); + v = POP(); + x = PyNumber_InPlaceFloorDivide(v, w); + Py_DECREF(v); + Py_DECREF(w); + PUSH(x); + if (x != NULL) continue; + break; + + case INPLACE_TRUE_DIVIDE: + w = POP(); + v = POP(); + x = PyNumber_InPlaceTrueDivide(v, w); + Py_DECREF(v); + Py_DECREF(w); + PUSH(x); + if (x != NULL) continue; + break; + case INPLACE_MODULO: w = POP(); v = POP();
