Estoy escribiendo código para analizar cadenas de expresiones matemáticas y noté que el orden en que se evalúan los operadores de potencia encadenados en Python difiere del orden en Excel.
De http://docs.python.org/reference/expressions.html :
"Por lo tanto, en una secuencia sin potencia de operadores de potencia y unarios, los operadores se evalúan de derecha a izquierda (esto no restringe el orden de evaluación para los operandos): -1 * 2 da como resultado -1".
Esto significa que, en Python:
2**2**3
se evalúa como2**(2**3) = 2**8 = 256
En Excel, funciona al revés: 2^2^3
se evalúa como(2^2)^3 = 4^3 = 64
Ahora tengo que elegir una implementación para mi propio analizador. El orden de Excel es más fácil de implementar, ya que refleja el orden de evaluación de la multiplicación.
Le pregunté a algunas personas en la oficina qué sentían por la evaluación 2^2^3
y obtuve respuestas encontradas.
¿Alguien sabe de buenas razones o concideraciones a favor de la implementación de Python? Y si no tiene una respuesta, comente con el resultado que obtiene de la intuición, ¿ 64
o 256
?