Не опция мгновенного исправления, но расширение комментария агандера, использование str.format
по крайней мере гарантирует, что вы не заполнили случайно неназванные заполнители без появления ошибки.Это потому, что он отделяет позиционные замены от именованных с помощью правильного синтаксиса вызова метода:
>>> '%s %(var)s' % {'var': 'x'}
"{'var': 'x'} x"
>>> '{} {var}'.format(var='x')
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
'{} {var}'.format(var='x')
IndexError: tuple index out of range
>>> '{} {var}'.format(8, var='x')
'8 x'
Есть дополнительное преимущество, которое я использую довольно часто, чтобы Python поддерживал два различных синтаксиса заменыХотя это немного злоупотребление фавритом.Так как я пишу много кода, который собирает запросы SQL для передачи в интерфейс БД, который использует %s
для заполнителей для параметризованных запросов, я выполняю все мои вставки запросов внешнего уровня с str.format
, что оставляет заполнители %s
полностью беспокоящийся без необходимости постоянно избегать их.
>>> '%s {var}'.format(var='x')
'%s x'
Если по этой причине у вас есть %s
s, которые, как вы ожидаете, пройдут в вашем выводе, str.format
может значительно упростить вашу жизнь.