Les chaînes de Format vs concaténation
Je vois beaucoup de personnes utilisant le format des chaînes de caractères comme ceci:
root = "sample"
output = "output"
path = "{}/{}".format(root, output)
Au lieu de simplement la concaténation de chaînes de caractères comme ceci:
path = root + '/' + output
Ne les chaînes de format de meilleures performances ou est-ce juste pour le look?
Je dirais qu'ils ont de moins bonnes performances. Mais je préfère encore les chaînes de format dans la non-performance des endroits critiques.
Double Possible de Python mise en forme de chaîne: % vs concaténation
Double Possible de Python mise en forme de chaîne: % vs concaténation
OriginalL'auteur wjk2a1 | 2016-08-02
Vous devez vous connecter pour publier un commentaire.
C'est juste pour le look. Vous pouvez voir en un coup d'œil ce que le format est. Beaucoup d'entre nous aiment la lisibilité de mieux que de micro-optimisation.
Voyons ce que IPython est
%timeit
dit:vous avez besoin d'un f en face d'elle, mais oui.
OriginalL'auteur kay
Comme avec la plupart des choses, il y aura une différence de performance, mais demandez-vous "est-il vraiment si c'est ns plus vite?". Le
root + '/' output
méthode est rapide et facile à saisir. Mais cela peut être difficile de se lire très vite lorsque vous avez plusieurs variables à imprimervs
Qui est plus facile à comprendre ce qui se passe? À moins que vous vraiment besoin de eak de la performance, choisi la voie qui sera plus facile pour les gens à lire et à comprendre
OriginalL'auteur FuriousGeorge
Chaîne de format est libre de type de données lors de la liaison de données. Alors que dans la concaténation nous devons type de fonte ou de convertir les données en conséquence.
Par exemple:
Il pourrait être réalisée par mise en forme de chaîne:
Tels que, avec-dans les espaces réservés
{} {}
, nous supposons que les deux choses sont encore à venir c'est à dire, dans ce cas, sonta
etb
..format
, il évite les erreurs commeCannot concatenate 'str' and 'int' objects
OriginalL'auteur Half Genius
Ce n'est pas seulement pour les "looks", ou, pour puissant lexicale conversions de type; c'est également un must pour l'internationalisation.
Vous pouvez changer de chaîne de format en fonction de ce que la langue est sélectionnée.
Avec une longue ligne de concaténations de chaîne de boulangerie dans le code source, cela devient effectivement impossible de le faire correctement.
OriginalL'auteur Lightness Races in Orbit
Je suis d'accord que la mise en forme est principalement utilisé pour des raisons de lisibilité, mais depuis la sortie de f-chaînes en 3.6, les tables ont tourné en termes de performances. Il est aussi de mon avis que le f-les cordes sont plus lisible et maintenable car 1) ils peuvent être lus de gauche à droite comme la plupart de texte normal et 2) l'espacement des handicaps liés de concaténation sont évitées car les variables sont dans les cordes.
L'exécution de ce code:
les rendements de ce résultat sur ma machine:
Une semblable réponse à une autre question est donnée sur cette réponse.
OriginalL'auteur Eric Ed Lohmar
De Python 3.6 vous pouvez faire chaîne littérale de l'interpolation par prepeding
f
à la chaîne:OriginalL'auteur Cyzanfar
C'est pour des regards et de la maintenance du code. C'est vraiment plus facile de modifier votre code si vous avez utilisé le format. Aussi lorsque vous utilisez +, vous risquez de manquer les détails comme les espaces. Utiliser le format pour votre et possible responsable de la bonne.
OriginalL'auteur Doruk