var1 = 'abc'
var2 = 'xyz'
print('literal' + var1 + var2) # literalabcxyz
print('literal', var1, var2) # literal abc xyz
... sauf pour automatique espaces ',' quoi la différence entre les deux? Pour l'utiliser normalement, qui est le plus rapide?
Grâce
OriginalL'auteur 3zzy | 2010-01-09
(Vous êtes à l'aide de Python 3.x, d'où l'impression est une fonction de 2.x, l'imprimé est une déclaration. C'est une bonne idée de mentionner la principale version de Python—2.x ou 3.x—surtout quand demander de l'aide, parce qu'actuellement, la plupart des gens raisonnablement supposer que la 2.x sauf si c'est indiqué.)
La première,
print('literal' + var1 + var2)
, évalue une expression et passe un seul argument à imprimer. La deuxième,print('literal', var1, var2)
, tout passe trois arguments à imprimer. C'est presque la même sortie purement par hasard: c'est la façon dont les œuvres imprimées. Le second n'est pas de faire toute la concaténation, et qui est tout simplement la sortie de chaque valeur, séparés par un espace (qui est d'imprimer le comportement par défaut).Être explicite: le plus dans l'expression est faire la concaténation, mais la virgule n'est pas faire la concaténation.
Calendrier: j'ai obtenu les résultats ci-dessous; cependant, je crois que c'est biaisé parce que les cordes sont si courtes (par exemple, des chaînes plus longues pourraient inverser le résultat), et dans tous les cas, l'impression que la présentation de la question ne sera pas long (vous obtiendrez de meilleures performances se soucier de de nombreux d'autres choses à la place).
Remarque: Utilisation
python -m timeit --help
pour obtenir des instructions sur la façon d'utiliser timeit.En particulier, l'avis de chaque code vous donnera exactement la même sortie (ça n'a aucun sens de comparer si une méthode donne des résultats erronés). Le StringIO est un moyen facile de pas d'impression à l'écran dans ces tests, mais il pourrait affecter les résultats.
Ils font des choses différentes, vous ne pouvez pas raisonnablement comparer pour la vitesse. Cela dit, vous pouvez comparer les impression deux façons différentes, utilisez le module timeit.
Notez que pour les horaires ci-dessus, cStringIO est presque certainement va effectuer différemment que d'écrire sur la console, et lors de l'écriture de la console, le rendement peut varier en fonction de la plate-forme et de la taille des chaînes qui vous avez affaire.
OriginalL'auteur
Le passage des chaînes comme arguments pour imprimer les rejoint avec le " sep " mot-clé. Valeur par défaut est '' (espace).
Séparateur de mot-clé est Python 3.x uniquement. Avant que le séparateur est toujours un espace, sauf dans de 2,5(?) et jusqu'où vous pouvez
from __future__ import print_function
ou quelque chose comme ça.OriginalL'auteur Tor Valamo
À l'aide d'une virgule donne l'impression de fonction à plusieurs arguments (qui dans ce cas sont imprimés tout, séparés par un espace. À l'aide de la plus la volonté de créer un argument pour l'impression, qui est imprimé dans son intégralité.
Je pense que l'aide de l' + est le meilleur dans ce cas.
OriginalL'auteur rael_kid