Pull to refresh

Comments 11

"There should be one-- and preferably only one --obvious way to do it." (c)

f-строки и есть тот самый obvious way. Конкуренты проигрывают по всем возможным пунктам настолько, что не использовать f-строки глупо.

Я писал на Питоне много лет, и одно могу сказать точно: нет легче способа разжечь срач, чем спросить о форматировании строк.

Я даже троллил коллег: использовал сишный оператор `"foo %s bar %d" % ('kek', 1)` и наблюдал километры срача между участниками.

Раньше такие срачи имели место быть, но после появления f-строк есть резон использовать другие варианты?
Минусов у f-строк не много. Например, они не подходят для динамического форматирования(с заранее неизвестным форматом строки и, возможно, набором переменных), но это редкий случай использования(само собой, речь идёт о простых строках, где jinja это слишком).
И нельзя отметить, что автодополнение и подсветка ошибок вашей среды разработки, будет прекрасно работать для f-строк.

Да я не оспариваю преимуществ f-строк. Я пошутил, что тезис из Дзена конфликтует с зоопарком форматирования. И когда у вас команда из 10 человек, каждый с такой же уверенностью высказывает другое мнение => срач.

pyupgrade и ruff умеют конвертировать другие форматы в  f-строки.

Вообще использование линтеров и форматеров убирает достаточно много срачей.

f-строки не поддерживают динамическое форматирование осознанно. f-строка позволяет выполнять произвольный код, и возможность подставлять туда шаблоны создает очень большое окно для уязвимостей.

Однако эта возможность может быть реализована в сторонних библиотеках f-строк, например в моей.

... нет легче способа разжечь срач, чем спросить о форматировании строк.

Хм, как насчет tab vs. spaces?

У них есть одна проблема, если надо переводить проект на Питоне на другие языки, то babel их не поддерживает и придётся везде их менять на format()

Действительно. Сначала хотел написать, мол это babel такой плохой, но прочитав это issue понял, что:

PEP 498 completely ignores localization as if you never need to use localized programs with string interpolation.

Интересно, в других языках дела с переводами интерполируемых строк обстоят также или есть какое-то решение, которое разработчики питона почему-то проигнорировали.

Sign up to leave a comment.

Articles