[Python-es] Python 3.5.2
Daπid
davidmenhur en gmail.com
Sab Dic 24 14:35:08 EST 2016
2016-12-24 17:52 GMT+01:00 Johnny Alonso <johnny.alonso.quintero en gmail.com>:
> Aquí los resultados con el operador ** coinciden, -4 en ambos casos, y lo
> acepto como correcto desde el punto de vista del lenguaje, pero no desde el
> punto de vista matemático, pues matemáticamente las expresión -2² es
> diferente a -(2²).
La convención usual en libros de matemáticas superiores es que -2^2
(léase menos dos al cuadrado) es -4. Es decir, -x^2 = -(x^2)
Por desgracia, los libros elementales no siguen siempre la misma
convención, y tarde o temprano acaba causando confusión. Por ejemplo,
la función x^2 (equis cuadrado) es convexa según casi cualquier libro
avanzado, pero la mitad de los libros básicos la consideran cóncava. Y
me sé tres definiciones diferentes de la transformada de Fourier,
según si mires un libro de física teórica, óptica o ingeniería (seis
si cuentas cuál es la directa y cuál es la inversa); y siempre hay que
mirar cuál están usando exactamente.
> Conjetura: Python no implementa el operador menos unario, pero si el binario
> el cual tiene menor precedencia que el de potenciación, así:
>
> -x**n es interpretado en Python como 0-x**n.
Sí que la implementa.
dis.dis(lambda x:-x**2)
1 0 LOAD_FAST 0 (x)
3 LOAD_CONST 1 (2)
6 BINARY_POWER
7 UNARY_NEGATIVE
8 RETURN_VALUE
Si quieres negar tu propia clase, tienes que implementar el método __neg__(self)
/David.
Más información sobre la lista de distribución Python-es