No puedo entender por qué Python no tiene una sign
función. Tiene un abs
incorporado (que considero sign
la hermana), pero nosign
.
En python 2.6 hay incluso una copysign
función (en matemáticas ), pero no hay signo. ¿Por qué molestarse en escribir un copysign(x,y)
cuando podría simplemente escribir un sign
y luego obtener el copysign
directamente abs(x) * sign(y)
? Lo último sería mucho más claro: x con el signo de y, mientras que con copysign debe recordar si es x con el signo de y o y con el signo de x.
Obviamente sign(x)
no proporciona nada más quecmp(x,0)
, pero sería mucho más legible que esto también (y para un lenguaje muy legible como python, esto habría sido una gran ventaja).
Si yo fuera un diseñador de Python, sería lo contrario: no cmp
incorporado, sino a sign
. Cuando lo necesite cmp(x,y)
, podría hacer un sign(x-y)
(o, mejor aún para cosas no numéricas, solo una x> y, por supuesto, esto debería haber requerido sorted
aceptar un booleano en lugar de un comparador de enteros). Esto también sería más claro: positivo cuando x>y
(mientras cmp
que hay que recordar la convención positiva cuando la primera es más grande , pero podría ser al revés). Por supuestocmp
tiene sentido en sí mismo por otras razones (por ejemplo, al ordenar cosas no numéricas, o si desea que la clasificación sea estable, lo que no es posible usar simplemente con un valor booleano)
Entonces, la pregunta es: ¿por qué los diseñadores de Python decidieron dejar la sign
función fuera del lenguaje? ¿Por qué se molestan los diablos copysign
y no su padre sign
?
¿Me estoy perdiendo de algo?
EDITAR - después del comentario de Peter Hansen. Es justo que no lo haya usado, pero no dijo para qué usa Python. ¡En 7 años que uso Python, lo necesité incontables veces, y la última es la gota que colmó el vaso!
Sí, puedes pasar cmp, pero el 90% de las veces que tuve que pasar fue en un idioma como
lambda x,y: cmp(score(x),score(y))
ese hubiera funcionado bien con el signo.
Finalmente, espero que esté de acuerdo en que sign
sería más útil que copysign
, así que incluso si compré su vista, ¿por qué molestarse en definir eso en matemáticas, en lugar de firmar? ¿Cómo puede ser tan útil Copysign que Sign?