¿Cuál es la asociatividad del operador ** de Python?

Simplemente estaba jugando con la línea de comandos de python y el operador **, que, hasta donde sé, realiza una función de potencia. Entonces 2 ** 3 debe ser (y es) 8 porque 2 * 2 * 2 = 8.

¿Alguien puede explicar el comportamiento que encontré? No veo ninguna forma de agrupar las operaciones con paréntesis para obtener un resultado de 65536 como se logró aquí.

>>> 2 ** 2 ** 2 16 >>> 2 ** 2 ** 2 ** 2 65536 >>> (2 ** 2 ** 2) ** 2 256 

 2** (2**(2**2)) 

de http://docs.python.org/reference/expressions.html

Los operadores en el mismo grupo de cuadro de izquierda a derecha (a excepción de las comparaciones, incluidas las pruebas, que tienen la misma prioridad y cadena de izquierda a derecha, consulte la sección Comparaciones y exponenciación, que agrupa de derecha a izquierda ).

O bien se asocia a la izquierda o la derecha. Para descubrir la respuesta a ti mismo, haz el experimento.

 >>> 3 ** 3 ** 3 7625597484987 >>> (3 ** 3) ** 3 19683 >>> 3 ** (3 ** 3) 7625597484987 

Así, se asocia a la derecha.

O puedes leer los documentos. google: “python power” y el primer resultado es http://www.python.org/doc/2.5.2/ref/power.html

La segunda oración es:

Por lo tanto, en una secuencia de operadores sin energía y sin paréntesis, los operadores se evalúan de derecha a izquierda (esto no restringe el orden de evaluación de los operandos).

Confirmando los resultados experimentales.

También:

 2 ** (2 ** 2 **2) 

De una forma u otra, se convierte en 2 ** 16

El operador ** es asociativo correcto:

2 ** (2 ** (2 ** 2)) = 2 ** (2 ** 4) = 2 ** 16 = 65536