L'utilisation de '{}' dans les chaînes de format est-elle considérée comme Pythonic?

9

Je viens d'apprendre que tu sais écrire

'{}{}'.format(string_a, string_b)

au lieu de

'{0}{1}'.format(string_a, string_b)

en Python, c'est-à-dire que vous pouvez omettre les chiffres pour les paramètres de format de chaîne lorsque vous voulez que les choses s'enchaînent une par une dans l'ordre.

Est-ce considéré comme Pythonic?

REMARQUE: "Pythonic" est un terme couramment utilisé par les programmeurs Python pour désigner le code Python idiomatique. Dans la culture Python, il y a généralement un consensus clair sur les questions de style, en particulier pour des questions très spécifiques comme celle-ci, étant donné la philosophie de conception explicite du langage "Il devrait y avoir une - et de préférence une seule - manière évidente de le faire." Ceci est cité dans "Le Zen de Python", un ensemble d'aphorismes qui va un long chemin vers la définition de ce qui est "Pythonic" et qui est inclus avec chaque distribution de Python (sur n'importe quelle ligne de commande d'interpréteur Python, entrez import thispour le voir).

Ghopper21
la source
4
@GregHewgill: "Pythonic" est un terme assez couramment utilisé qui signifie essentiellement "Python idiomatique"; le genre de code Python que les amateurs de code Python de qualité trouveraient stylistiquement agréable.
Carson63000
1
Cette très spécifique caractéristique est clairement inclus dans Python (ce n'est pas vraiment une question de style), alors pourquoi ne serait - il être considéré comme « Pythonic » par une définition raisonnable? Pour autant que je sache, il n'y a aucune caractéristique du langage qui soit considérée comme "non Pythonique".
Greg Hewgill
4
Pour référence, la {}fonctionnalité a été introduite dans Python 3.1 . L'amélioration à l'origine de cet ajout était le problème 5237 . Guido a plusieurs commentaires à ce sujet, y compris "S'il vous plaît, allez-y et terminez cela. Je suis content que cela entre!" Si ce n'est pas considéré comme "Pythonic", je ne sais pas ce que c'est.
Greg Hewgill
4
Aux personnes qui votent pour clore cette question, puis-je simplement souligner que ce qui est ou n'est pas Pythonic est une partie importante de la culture de codage Python, et je dirais que la culture de codage est un élément important du génie logiciel, un sujet accepté de ce site.
Ghopper21
2
@Andrea - c'est exactement ce que ma première pensée a été, mais il est difficile de dire que le BDFL pense que ce n'est pas Pythonic. Après avoir vu la citation de lui à ce sujet, je suis revenu sur le Zen de Python, et j'ai pensé que c'était peut-être un cas de "praticité contre pureté"? La justification de la discussion (liée dans la réponse de Greg) concerne la commodité pour le rédacteur de code. Et dans tous les cas, la manière la plus explicite d'utiliser le formatage des chaînes est "{a}{b}".format(a=string_a, b=string_b)plutôt que la numérotation. Quoi qu'il en soit, ce ne sont que mes spéculations et mes lectures entre les lignes sur la pensée ...
Ghopper21

Réponses:

12

La {}fonctionnalité a été introduite dans Python 3.1 (et a également été rétroportée vers Python 2.7). L'amélioration à l'origine de cet ajout était le problème 5237 . Guido a plusieurs commentaires à ce sujet, notamment:

Veuillez continuer et terminer ceci. Je suis content que ça entre!

Une caractéristique avec ce genre d'approbation du BDFL serait certainement considérée comme "Pythonique" par n'importe quelle mesure.

Greg Hewgill
la source