Использование '{}' в строках формата считается Pythonic?

9

Я только что узнал, что ты можешь написать

'{}{}'.format(string_a, string_b)

вместо

'{0}{1}'.format(string_a, string_b)

в Python, то есть вы можете опустить цифры для параметров формата строки, когда вы хотите, чтобы вещи располагались друг за другом по порядку.

Это считается Pythonic?

ПРИМЕЧАНИЕ. «Pythonic» - это часто используемый среди программистов Python термин, обозначающий идиоматический код Python. В Python-культуре, как правило, существует четкое согласие по стилевым вопросам, особенно для очень специфических, таких как этот, учитывая явную философию дизайна языка «Должен быть один - и предпочтительно только один - очевидный способ сделать это». Это цитата из "Дзэн Python", набора афоризмов, которые имеют большое значение для определения того, что является "Pythonic" и который включен в каждый дистрибутив Python (в любой командной строке интерпретатора Python введите его, import thisчтобы увидеть).

Ghopper21
источник
4
@GregHewgill: «Pythonic» - довольно часто используемый термин, который в основном означает «идиоматический Python»; код Python, который поклонники качественного кода Python сочли бы стилистически приятным.
Carson63000
1
Эта очень специфическая особенность явно включена в Python (на самом деле это не вопрос стиля), так почему бы ее не считать «Pythonic» по любому разумному определению? Насколько я знаю, нет никаких особенностей языка, которые считаются "непифоническими".
Грег Хьюгилл
4
Для справки, {}функция была представлена ​​в Python 3.1 . Улучшение, которое вызвало это добавление, было проблемой 5237 . У Гвидо есть несколько комментариев по этому вопросу, в том числе «Пожалуйста, продолжайте и заканчивайте. Я рад, что это происходит!» Если это не считается "Pythonic", я не знаю, что это.
Грег Хьюгилл,
4
Для тех, кто голосует за закрытие этого вопроса, могу я просто указать, что Pythonic является или не является важной частью культуры кодирования Python, и я бы сказал, что культура кодирования является важным элементом разработки программного обеспечения, признанным предметом этот сайт.
Ghopper21
2
@ Андреа - это именно то, о чем я думал в первый раз, но трудно утверждать, что BDFL считает, что это не пифоново. Увидев его цитату об этом, я снова посмотрел на Дзен Питона и подумал, может, это случай «практичность превосходит чистоту»? Обоснование в обсуждении (ссылка на которое есть у Грега) связано с удобством для автора кода. И в любом случае, действительно наиболее явный способ использовать форматирование строк, "{a}{b}".format(a=string_a, b=string_b)а не нумерацию. Во всяком случае, это всего лишь мои предположения и чтения между строк на мышление ...
Ghopper21

Ответы:

12

Эта {}функция была представлена ​​в Python 3.1 (а также перенесена в Python 2.7). Улучшение, которое вызвало это добавление, было проблемой 5237 . У Гвидо есть несколько комментариев по этому вопросу, в том числе:

Пожалуйста, продолжайте и закончите это. Я рад, что это происходит!

Особенность с такого рода одобрением со стороны BDFL , безусловно, будет считаться "Pythonic" по любым показателям.

Грег Хьюгилл
источник