En Python, il est fastidieux d'écrire:
print "foo is" + bar + '.'
Puis-je faire quelque chose comme ça en Python?
print "foo is #{bar}."
Python 3.6+ a une interpolation variable - ajoutez un f
à votre chaîne:
f"foo is {bar}"
Pour les versions de Python ci-dessous (Python 2 - 3.5), vous pouvez utiliser str.format
pour passer des variables:
# Rather than this:
print("foo is #{bar}")
# You would do this:
print("foo is {}".format(bar))
# Or this:
print("foo is {bar}".format(bar=bar))
# Or this:
print("foo is %s" % (bar, ))
# Or even this:
print("foo is %(bar)s" % {"bar": bar})
Python 3.6 aura a interpolation de chaîne littérale en utilisant les chaînes f :
print(f"foo is {bar}.")
Python 3.6 a introduit des chaînes f :
print(f"foo is {bar}.")
Ancienne réponse:
Depuis la version 3.2 Python a str.format_map
qui avec locals()
ou globals()
vous permet de faire vite:
Python 3.3.2+ (default, Feb 28 2014, 00:52:16)
>>> bar = "something"
>>> print("foo is {bar}".format_map(locals()))
foo is something
>>>
J'ai appris la technique suivante de Python Essential Reference :
>>> bar = "baz"
>>> print "foo is {bar}.".format(**vars())
foo is baz.
Ceci est très utile lorsque nous voulons faire référence à de nombreuses variables dans la chaîne de formatage:
"{x}{y}".format(x=x, y=y)
et "%(x)%(y)" % {"x": x, "y": y}
)."{}{}".format(x, y)
, "{0}{1}".format(x, y)
et "%s%s" % (x, y)
).>>> bar = 1
>>> print "foo is {}.".format(bar)
foo is 1.
Je préfère cette approche car vous n'avez pas à vous répéter en référençant la variable deux fois:
alpha = 123 print 'La réponse est {alpha}'. format (** locaux ())
Il y a une grande différence entre cela dans Ruby:
print "foo is #{bar}."
Et ceux-ci en Python:
print "foo is {bar}".format(bar=bar)
Dans l'exemple Ruby exemple, bar
est évalué
Dans l'exemple Python, bar
n'est qu'une clé du dictionnaire
Dans le cas où vous utilisez simplement des variables, elles se comportent plus ou moins de la même manière, mais en général, la conversion Ruby to Python n'est pas aussi simple que cela)
Oui absolument. Python, à mon avis, a un grand support pour le formatage des chaînes, les remplacements et les opérateurs.
Cela pourrait être utile:
http://docs.python.org/library/stdtypes.html#string-formatting-operations