On Mon, Apr 1, 2013 at 9:06 AM, Alex <foo@email.invalid> wrote: > Dave Angel wrote: > >> On 03/31/2013 02:56 AM, morphex wrote: >> > > > > 1**2 >> > 1 >> > > > > 1**2**3 >> > 1 >> > > > > 1**2**3**4 >> > 1L >> > > > > 1**2**3**4**5 >> > Traceback (most recent call last): >> > File "<stdin>", line 1, in <module> >> > MemoryError >> > > > > >> > >> > Does anyone know why this raises a MemoryError? Doesn't make sense >> > to me. >> >> Perhaps you didn't realize that the expression will be done from >> right to left. > > Really? > > The Python 3 documentation > (http://docs.python.org/3/reference/expressions.html) says in section > 6.14 (Evaluation order) that "Python evaluates expressions from left to > right" (an exception being when evaluating assignments, in which case > the RHS of the assignment is calculated first, in left-to-right order). > > Section 6.4 discusses the power operator specifically and does not > contradict 6.14 except that the power operator uses right-to-left > evaluation in the presence of unparenthesized unary operators.
http://docs.python.org/3/reference/expressions.html#operator-precedence Opening paragraph, "... exponentiation, which groups from right to left". It follows the obvious expectation from mathematics. (The OP is using Python 2, but the same applies.) ChrisA -- http://mail.python.org/mailman/listinfo/python-list