No puedo entender por qué Python no tiene una signfunción. Tiene un absincorporado (que considero signla hermana), pero nosign .
En python 2.6 hay incluso una copysignfunción (en matemáticas ), pero no hay signo. ¿Por qué molestarse en escribir un copysign(x,y)cuando podría simplemente escribir un signy luego obtener el copysigndirectamente 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 cmpincorporado, 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 sortedaceptar un booleano en lugar de un comparador de enteros). Esto también sería más claro: positivo cuando x>y(mientras cmpque 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 signfunción fuera del lenguaje? ¿Por qué se molestan los diablos copysigny 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 signserí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?