Подтвердить что ты не робот

Python 3: использование% s и .format()

Я, наконец, переключился с % на оператор форматирования строки .format() в моем коде 2.x, чтобы упростить переход на 3.x в будущем. Было немного удивительно узнать, что в Py3 остается не только форматирование % -style, но широко используется в стандартном библиотечном коде. Это кажется логичным, потому что запись '(%s)' % variable немного короче и, возможно, проще понять, чем '({})'.format(variable). Но я все еще сомневаюсь. Правильно ли (pythonic?) Использовать оба подхода в коде? Спасибо.

4b9b3361

Ответ 1

Документация Python 3.2 указала, что % в конечном итоге исчезнет.

http://docs.python.org/3.2/tutorial/inputoutput.html#old-string-formatting

Так как str.format() является совершенно новым, много кода Python по-прежнему использует %оператор. Однако, поскольку этот старый стиль форматирования будет в конечном счете, удалить из языка, str.format() в целом.

Но поскольку @regilero говорит, предложение ушло из 3.3, что может показаться на самом деле не случайным. Есть несколько разговоров здесь, которые предлагают то же самое.

От Python 3.4 в пункте 7.1.1 говорится:

Оператор% также может использоваться для форматирования строк. Он интерпретирует левый аргумент очень похож на строку стиля стиля sprintf(), которая должна быть применяется к правильному аргументу и возвращает строку, полученную из эта операция форматирования.

См. также Python 3.4 4.7.2 Форматирование строк в стиле printf.

Ответ 2

"% s" теперь "{}", поэтому для добавления% s замените его на {}, где вы хотите добавить переменную в строку.

def main():
    n="Python 3.+" 
    l="looks nice"
    f="does not look practical."


    print("This seems to be the new way {}".format(n)\
      + "will be working, rather than the ' % ',{} but {}".format(l,f))



main()

#In comparison to just injecting the variable

Выходные данные игнорируют цитаты, которые они приводят для иллюстрации.

"Кажется, это новый способ" Python 3. + "будет работать, а не" %;, "выглядит хорошо", но "не выглядит практичным"."