88 votes

Devrais-je utiliser np.absolute ou np.abs?

Numpy fournit à la fois l' np.absolute et l'alias np.abs défini par

from .numeric import absolute as abs

qui semble être en violation évidente de la zen de python:

Il devrait y avoir un, et de préférence seulement une façon évidente de le faire.

Donc je suppose qu'il y a une bonne raison à cela.

J'ai personnellement été à l'aide d' np.abs dans la quasi totalité de mon code et en regardant par exemple le nombre de résultats de la recherche pour np.abs vs np.absolue sur Stack Overflow, il semble que l'écrasante majorité fait la même chose (2130 vs 244 hits).

Est-il une raison je devrais utiliser préférentiellement np.absolute sur np.abs dans mon code, ou devrais-je simplement aller pour les plus "standard" np.abs?

80voto

MSeifert Points 6307

C'est probablement parce qu'il y a des fonctions intégrées avec le même nom, abs. Le même est vrai pour np.amax, np.amin et np.round_.

Les alias pour les fonctions de NumPy abs, min, max et round ne sont définies dans le package de niveau supérieur.

Donc, np.abs et np.absolute sont complètement identiques. Il n'est pas question que celle que vous utilisez.

Il y a plusieurs avantages à court noms: Ils sont plus courts et ils sont connus pour Python pour les programmeurs parce que les noms sont identiques aux fonctions Python. Si les utilisateurs finaux ont plus facile (moins de type, de moins en moins à retenir).

Mais il y a des raisons d'avoir différents noms: NumPy (ou plus généralement la 3ème partie de paquets) parfois besoin de fonctions Python abs, min, etc. Donc, à l'intérieur du paquet, ils définir des fonctions avec un nom différent de sorte que vous pouvez toujours accéder aux fonctions Python - et seulement dans le haut-niveau de l'emballage, vous vous exposer les "raccourcis". Note: les noms ne sont pas la seule option possible dans ce cas: On peut contourner cela avec le module Python builtins d'accéder à des fonctions intégrées si une ombre intégré dans le nom.

Il pourrait également être le cas (mais c'est pure spéculation de ma part) qu'ils ont à l'origine inclus uniquement le long des fonctions nommées absolute (et ainsi de suite) et seulement ajouté le court alias plus tard. L'une des plus grandes et bien utilisé la bibliothèque NumPy les développeurs ne pas supprimer ou dénigrent les choses à la légère. Ils peuvent donc juste garder les noms longs, car il pourrait se briser ancien code/scripts s'ils les supprimer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X