Avant de me lancer dans Python, j'avais commencé par lire quelques livres sur Objective-C / Cocoa. Si je me souviens bien, la plupart des fonctions exigeaient que les arguments des mots-clés soient explicitement indiqués. Jusqu'à récemment, j'ai oublié tout cela, et j'ai simplement utilisé des arguments positionnels en Python. Mais dernièrement, j'ai rencontré quelques bugs dus à des positions incorrectes - des petites choses sournoises.
Cela m'a fait réfléchir - de manière générale, à moins qu'il n'y ait une circonstance qui exige spécifiquement des arguments autres que des mots-clés - y a-t-il une bonne raison de ne pas utiliser des arguments de mots-clés ? Est-il considéré comme un mauvais style de toujours les utiliser, même pour des fonctions simples ?
J'ai l'impression que, comme la plupart de mes programmes de 50 lignes passent régulièrement à 500 lignes ou plus, si je m'habitue à toujours utiliser des arguments sous forme de mots-clés, le code sera plus facile à lire et à maintenir au fur et à mesure de sa croissance. Y a-t-il une raison pour que ce ne soit pas le cas ?
UPDATE :
L'impression générale que j'ai est qu'il s'agit d'une préférence de style, avec de nombreux arguments valables pour dire qu'ils ne devraient généralement pas être utilisés pour des arguments très simples, mais qu'ils sont par ailleurs conformes à un bon style. Avant d'accepter, je veux juste clarifier les choses - y a-t-il des problèmes spécifiques non stylistiques qui découlent de cette méthode - par exemple, des pertes de performance significatives ?
3 votes
Un endroit où j'ai vu le conseil de toujours utiliser des arguments de mots-clés est avec
__init__
. Voir fuhm.net/super-harmful . Ce n'est pas aussi général que ce que vous demandez ici, mais c'est un argument en faveur de ce que vous suggérez.0 votes
Je dirais que vous demandez pourquoi Python va dans ce sens parce qu'il vient d'Objective-C à Python. Si vous faisiez le chemin inverse, vous demanderiez pourquoi Objective-C nous oblige à utiliser des arguments de mots-clés partout ! (Non pas qu'il s'agisse d'un choix mauvais ou irrationnel ; il s'agit simplement d'une conception différente. Cependant, l'ensemble du langage en est affecté et je vous suggère donc de ne pas essayer de copier une telle conception dans un autre langage).