Por qué 0 ** 0 es igual a 1 en python

¿Por qué 0 ** 0 igual a 1 en Python? ¿No debería lanzar una excepción, como 0 / 0 hace?

Wikipedia tiene una cobertura interesante de la historia y los diferentes puntos de vista sobre el valor de 0 ** 0 :

El debate ha continuado al menos desde principios del siglo XIX. En ese momento, la mayoría de los matemáticos acordaron que 0 ** 0 = 1 , hasta que en 1821 Cauchy incluyó 0 ** 0 junto con expresiones como 0⁄0 en una tabla de formas no definidas. En la década de 1830, Libri publicó un argumento poco convincente para 0 ** 0 = 1 , y Möbius se puso del lado de él …

Según se aplica a las computadoras, IEEE 754 recomienda varias funciones para calcular una potencia. Define pow(0, 0) y pown(0, 0) como devolver 1 , y powr(0, 0) como devolver NaN .

La mayoría de los lenguajes de progtwigción siguen la convención de que 0 ** 0 == 1 . Python no es una excepción, tanto para argumentos de punto flotante como de enteros.

considere x^x :

Usando límites podemos llegar fácilmente a nuestra solución y reorganizar x^x obtenemos:

 x^x= exp(log(x^x)) 

Ahora, tenemos de:

 lim x->0 exp(log(x^x))= exp(lim x->0 xlog(x)) = exp(lim x->0 log(x)/(x^-1)) 

Aplicando la L'Hôpital , obtenemos:

 exp(lim x^-1/(-x^-2)) = exp(lim x->0 -x) = exp(0) = 1=x^x 

Pero según Wolfram Alpha 0**0 es indeterminado y las siguientes explicaciones fueron obtenidas por ellos:

0 ^ 0 en sí no está definido. La falta de un significado bien definido para esta cantidad se desprende de los hechos mutuamente contradictorios de que a ^ 0 siempre es 1, por lo que 0 ^ 0 debería ser igual a 1, pero 0 ^ a es siempre 0 (para a> 0), por lo que 0 ^ 0 debería ser igual a 0. Se podría argumentar que 0 ^ 0 = 1 es una definición natural ya que lim_ (n-> 0) n ^ n = lim_ (n-> 0 ^ +) n ^ n = lim_ (n-> 0 ^ -) n ^ n = 1. Sin embargo, el límite no existe para los valores complejos generales de n. Por lo tanto, la elección de definición para 0 ^ 0 generalmente se define como indeterminada “.