В Python утомительно писать:
print "foo is" + bar + '.'
Можно ли сделать что-то подобное в python?
print "foo is #{bar}."
В Python утомительно писать:
print "foo is" + bar + '.'
Можно ли сделать что-то подобное в python?
print "foo is #{bar}."
Python не выполняет переменную интерполяцию - он явный, а не неявный.
Однако вы можете использовать str.format
для передачи в переменных:
# Rather than this:
puts "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 будет литеральная строковая интерполяция с использованием f-строк:
print(f"foo is {bar}.")
Я изучил следующий метод из Python Essential Reference:
>>> bar = "baz"
>>> print "foo is {bar}.".format(**vars())
foo is baz.
Это очень полезно, когда мы хотим ссылаться на многие переменные в строке форматирования:
"{x}{y}".format(x=x, y=y)
и "%(x)%(y)" % {"x": x, "y": y}
)."{}{}".format(x, y)
, "{0}{1}".format(x, y)
и "%s%s" % (x, y)
).Python 3.6 представил f-строки:
print(f"foo is {bar}.")
Старый ответ:
Начиная с версии 3.2 Python имеет str.format_map
, который вместе с locals()
или globals()
позволяет быстро выполнять:
Python 3.3.2+ (default, Feb 28 2014, 00:52:16)
>>> bar = "something"
>>> print("foo is {bar}".format_map(locals()))
foo is something
>>>
>>> bar = 1
>>> print "foo is {}.".format(bar)
foo is 1.
В Ruby существует большая разница:
print "foo is #{bar}."
И это в Python:
print "foo is {bar}".format(bar=bar)
В примере Ruby оценивается bar
В примере на Python bar
является всего лишь ключом к словарю
В том случае, если вы просто используете переменные, они ведут себя более или менее одинаково, но в целом преобразование Ruby в Python не так просто
Я предпочитаю этот подход, потому что вам не нужно повторять себя, дважды ссылаясь на переменную:
alpha = 123 print 'The answer is {alpha}'.format(**locals())
Да, абсолютно. Python, на мой взгляд, отлично поддерживает форматирование строк, замены и операторы.
Это может быть полезно:
http://docs.python.org/library/stdtypes.html#string-formatting-operations