Найти - Пользователи
Полная версия: PEP 0498 -- Literal String Formatting
Начало » Обсуждение новостей » PEP 0498 -- Literal String Formatting
1 2 3
JOHN_16
https://www.python.org/dev/peps/pep-0498/

Вниманию всего сообщества Python представляет новый метод форматирования строк.

Его не назовешь революционным, скорее это эволюция существующего строчного метода format.

Высказываемся о плюсах и минусах, которые вы видите в данном PEP
4kpt_III
Шаблоны напоминает. А так да, здорово. Только вот пока к этому всему подтянуться модулестроители, я уже постарею или умру
PooH
Мне не нравится захват переменных из контекста, вместо явной передачи. Мне не нравится код внутри строк, это фактически eval. Этот PEP решает мааааленькую проблемку (кому надо форматировать большие куски текста, тот использует шаблонизаторы), но открывает большое поле для уязвимостей.

У вас на стройке sql-инъекции были? Будут…
FishHook
Может я плохо смотрел, но по ссылке не увидел одного ключевого момента: как работает этот формат, как замыкание или как вызов функции?

lines = []
for i in range(10):
    lines.append(f'Line # {i}')
Что в итоге получим в списке?
JOHN_16
FishHook
как работает этот формат, как замыкание или как вызов функции?
аналогичный вопрос возник и у меня. Пока что ответа нет, надо копать глубже, в mail lists может.
JOHN_16
и собственно еще и вопрос как этим пользоваться если уже есть строка/список строк подготовленных под такого рода форматирование.
FishHook
Вообще я согласен с Пухом, побочные эффекты в шаблонах форматирования, это уже несколько за гранью. Идея в общет то понятна, и есть примеры удачной реализации, в скале, например. Но вот только в скале переменнные как правило неизменяемые.
Лучше бы научили join автоматически к строке кастовать.
ZZZ
А по мне так неплохая идея. В примере FishHook получим максимально явный вариант: 1, 2, 3, 4…
SQL-инъекции? Да ладно! А сегодня с format инъекций не бывает? Если у кого-то не хватает ума так не делать, то это, как мне кажется, не проблемы языка.
Rodegast
Раньше join-ом пользовались и все были довольны, потом форматные строки сделали, потом format, теперь ещё какую-то хрень замутить пытаются. Задолбали!
JOHN_16
На счет безопастности, представим у нас каким либо образом появился опасный объект, вот код ниже (Python2) сработает на ура.
>>> class Evil(object):
...     def do_evil(self):
...         os.system('touch evil_was_here')
...     def __str__(self):
...         self.do_evil()
...         return 'Evil'
... 
>>> value = Evil()
>>> 
>>> print 'Be happy guy with {}'.format(value)
Be happy guy with Evil
а если у нас будет теперь что то вроде
print(f'Be happy guy with {value}')
то эффект будет тот же? Конечно пример условный, но суть. Если в первом случае можно сделать проверку на тип хотя бы, то во втором уже как то не очень?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB