Ввод данных пользователем нужно всегда рассматривать как злонамеренный прежде, чем укоротить его на нижние уровни Вашего приложения. Всегда вход очистки дескриптора как можно скорее и не должен ни по какой причине быть сохраненным в Вашей базе данных прежде, чем проверить на злонамеренное намерение.
Первоначальная идея заключалась в постепенном переключении на подход str.format (), позволяя использовать оба способа:
PEP 3101:
Новая система не конфликтует ни с одним из имен методов существующих методов форматирования строк, поэтому обе системы могут сосуществовать до тех пор, пока не придет время отказаться от старой системы.
Идея все еще разрабатывается:
Мы по-прежнему поощряем людей использовать новый str.format (). Проблема Python 7343
Поскольку исходный подход «%» планируется не рекомендовать и удалить в какой-то момент в будущем, я бы предложил написать новый код с помощью str.format (). Хотя на данный момент это вопрос личных предпочтений. Я лично предпочитаю использовать форматирование на основе словаря, которое поддерживается как оператором «%», так и методом str.format ().
Ни то, ни другое; первый используется во многих местах, а второй был представлен только что. Поэтому вопрос больше в том, какой стиль вы предпочитаете. На самом деле я предпочитаю форматирование на основе dict
:
d = { 'count': 1, 'txt': 'nice' }
'This is %(count)d %(txt)s example!' % d
Это гарантирует, что правильный параметр попадает в нужное место, позволяет повторно использовать один и тот же параметр в нескольких местах и т. Д.
Я думал, что читал, что оператор %
уже устарел в версии 3.1, поэтому я бы остановился на функции format ()
.