Pourquoi ne pas Python ont une fonction de signe?

Je ne comprends pas pourquoi Python n'est pas un sign fonction. Il a une abs builtin (que je considère sign's sister), mais pas de sign.

En python 2.6, il existe même un copysign fonction (en mathématiques), mais aucun signe. Pourquoi s'embêter à écrire un copysign(x,y) quand vous pourriez écrire un sign, puis obtenir le copysign directement à partir de abs(x) * sign(y)? Celui-ci serait beaucoup plus clair: x avec le signe de y, alors qu'avec copysign vous devez vous rappeler si c'est x avec le signe de y ou y avec le signe de x!

Évidemment sign(x) ne fournit pas quelque chose de plus que cmp(x,0), mais il serait beaucoup plus lisible que ce trop (et pour un très lisible langage comme python, cela aurait été un gros plus).

Si j'étais un python designer, j'aurais été dans l'autre façon arond: pas de cmp builtin, mais un sign. Lorsque vous avez besoin cmp(x,y), vous pourriez faire un sign(x-y) (ou, encore mieux pour les non-numérique tout ça, juste un x>y - bien sûr, cela aurait exigé sorted acceptant un booléen au lieu d'un entier comparateur). Cela permettrait aussi d'être plus clair: positif quand x>y (alors qu'avec cmp vous devez vous rappeler de la convention positif lorsque le première est plus, mais il pourrait être dans l'autre sens). Bien sûr cmp de sens que dans son propre pour d'autres raisons (par exemple, lors d'un tri numérique non-choses, ou si vous voulez du genre à être stable, ce qui n'est pas possible en utilisant simplement un booléen)

Donc, la question est: pourquoi le Python concepteur(s) de décider de quitter l' sign fonction de la langue? Pourquoi diable s'embêter avec copysign et pas son parent sign?

Suis-je raté quelque chose?

EDIT - après Peter Hansen commentaire.
Juste assez que vous n'avez pas l'utiliser, mais vous n'avez pas dit ce que vous utilisez python pour. En 7 ans que j'utilise python, j'ai besoin de nombreuses fois, et la dernière est la goutte d'eau qui a fait déborder le vase!

Oui, vous pouvez passer cmp autour, mais 90% du temps que je devais passer un langage comme
lambda x,y: cmp(score(x),score(y)) qui ont travaillé avec le signe de l'amende juste.

Enfin, j'espère que vous conviendrez que sign serait plus utile que copysign, de sorte que même si j'ai acheté votre avis, pourquoi s'embêter à propos de la définition qu'en mathématiques, au lieu du signe? Comment peut-copysign être tellement utile que de signer?

  • "Suis-je raté quelque chose?" Si rien d'autre, le fait que l'utilisation de sign(x-y) exige une expression être évalués, ce qui signifie que vous ne pouvez pas passer comme un rappel à moins que vous l'envelopper dans un "partielle" de la première. Avec cmp() tel que défini, vous venez de passer une référence à cmp autour. Aussi "extrêmement utile"? J'en doute. J'ai eu un besoin pour qu'une fois en 10 ans de l'écrit en Python. Si c'était vraiment utile, je pense qu'il serait là...
  • ne serait-ce pas l'argument de travail pour toutes les questions sur ce site? il suffit de fermer stackoverflow et poser toutes les questions au sujet pertinent dev utilisateur ou de la liste de diffusion!
  • D'abord je suis d'accord, un signum fonction est pratique et utile. Deuxièmement, je suis d'accord avec dmazzoni dans que votre question est préférable de poser sur python-dev. C'est une chose à vous demander comment utiliser une liste de compréhension à faire xyz: nous pouvons faire un bon travail de répondre ici. Mais de se demander pourquoi Guido Van Rossum gauche signum est difficile pour quelqu'un ici à la réponse.
  • Le bon endroit pour une question est tout endroit où il est susceptible d'être répondu. Ainsi, stackoverflow est un endroit approprié.
  • J'ai utilisé Python pour à peu près toute forme de logiciel il y a, littéralement. Je ne travaille pas exclusivement dans une région où le signe() serait donc utile. Vous semble; les développeurs ne sont manifestement pas. Comme il a été noté, si vous voulez vraiment la réponse, allez demander où sont les développeurs eux-mêmes traîner, et vous allez en prendre plein les oreilles.
  • -1: @Davide: "Pourquoi" et le "pourquoi pas" les questions ne peuvent être traitées ici. Puisque la plupart des directeurs d'école, de développement Python ne pas répondre à des questions ici, vous êtes rarement (voire jamais) pour obtenir une réponse à un "pourquoi" ou "pourquoi pas" en question. De plus, vous n'avez pas de problème à résoudre. Vous semblez avoir un coup de gueule. Si vous avez un problème ("Comment puis-je contourner l'absence de signe dans cet exemple...") qui est raisonnable. "Pourquoi pas" n'est pas raisonnable pour ce lieu.
  • Puisque vous demandez pourquoi quelqu'un créé quelque chose d'une manière particulière, pourquoi ne pas demander directement le graphiste? En essayant d'amener les autres à spéculer n'est pas particulièrement utile.
  • La question est peut-être un peu ému, mais je ne pense pas que c'est une mauvaise question. Je suis sûr que beaucoup de gens ont cherché un construit-dans la fonction de signe, de sorte qu'il peut être curieux de savoir pourquoi il n'existe pas.
  • C'est bon d'être curieux. Mais vous êtes très peu de chances d'obtenir une réponse ici. Alors allez être curieux de tout autre endroit où vous obtiendrez une réponse.
  • C'est parfaitement objectif de la question: “Pourquoi” Python est dépourvue de tout élément donné est légitime requête à propos de l'histoire de la langue de conception qui peut être répondu par un lien vers la discussion appropriée à partir de python-dev ou d'autres forums (parfois billets de blog) où le Python de base aux développeurs de se produire pour de hachage d'un sujet. Après avoir essayé de Google pour les bits de l'histoire de python-dev moi-même avant, je peux comprendre pourquoi un nouveau venu dans la langue pourrait frapper une impasse et venez poser ici dans l'espoir d'une plus expérimentés Python personne qui répond!

InformationsquelleAutor Davide | 2009-12-31