Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 8, 2015 09:03:35

snake_eater
Зарегистрирован: 2015-03-30
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему в Python нет интерполяции строк?

палю годноту

http://govnokod.ru/18148

import inspect
def phpformat(fmt):
    return fmt.format(**inspect.getouterframes(inspect.currentframe())[1][0].f_locals)
surname = "Бонд"
name = "Джеймс"
num = 7
print(phpformat("{surname}. {name} {surname}. Агент {num:03d}."))

Офлайн

#2 Ноя. 16, 2015 06:41:36

snake_eater
Зарегистрирован: 2015-03-30
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему в Python нет интерполяции строк?

ihorgorobets
Это не дает быдлокодерам плодить дыры
про говнокод только не надо заливать.

https://www.python.org/dev/peps/pep-0498/
только посмотрите - еcли там будет возможность вставлять не только переменнные но и выражения, тогда можно будет выкинуть все сторонние говно-шаблонизаторы и использовать возможности из коробки. как в PHP.
так что ждем выхода 3.6 и надеемся что примут

Отредактировано snake_eater (Ноя. 16, 2015 06:42:46)

Офлайн

#3 Ноя. 16, 2015 08:47:26

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Почему в Python нет интерполяции строк?

snake_eater
тогда можно будет выкинуть все сторонние говно-шаблонизаторы и использовать возможности из коробки. как в PHP.

Многие вещи можно будет делать из коробки если при интерполяции будет производится оценка выражений, это да. Но вы бы почитали что умеют делать шаблонизаторы, думаю тогда ваш оптимизм по поводу их выкидывания сильно уменьшился. В c/c++ принято выносить важный функционал в библиотеки. Потом они кочуют в стандартную библиотеку. Думаю такой подход оправдан. Написать import jinja2 или import mako меня совсем не напрягает.

Встроенная интерполяция обладает тем преимуществом что выражение используется в том месте где оно используется, что безусловно большой плюс. Но явность операции интерполяции строк все равно полезна в больших проектах.
Приемлемый компромис встроенная функция:
i=2;
def f(k):
   return k*3
print "some output {i:xxx} --{f(33)+i}".f() 



Отредактировано doza_and (Ноя. 16, 2015 09:03:47)

Офлайн

#4 Ноя. 23, 2015 15:30:24

snake_eater
Зарегистрирован: 2015-03-30
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему в Python нет интерполяции строк?

doza_and
Написать import jinja2 или import mako меня совсем не напрягает.
если все было так просто.

но надо еще делать pip install jinja2
надо изучить язык шаблонизатора.

pip install -U jinja2
и конечно же прогонять перед этим тесты каждый раз

Отредактировано snake_eater (Ноя. 23, 2015 15:32:01)

Офлайн

#5 Ноя. 23, 2015 17:23:30

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Почему в Python нет интерполяции строк?

Да, snake_eater, всё именно так просто.



Офлайн

#6 Ноя. 23, 2015 17:37:49

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Почему в Python нет интерполяции строк?

snake_eater
все сторонние говно-шаблонизаторы и использовать возможности из коробки. как в PHP.

Какие Вы шаблонизаторы знаете? У некоторых из них вообще другой принцип работы (сборка и вставка происходит по другим принципам). Поэтому нет, они все равно будут использоваться. Мало того, по наворотам, все же языку их тяжеловато будет догнать. Возможно создание стандартной библиотеки, которая сочетала бы в себе лучшие практики, хотя мне все же такое событие кажется сомнительным. Ну и единый механизм не всегда есть хорошо. Все хотелки в нем все равно учесть не получится.

P.S. Ну и не приводите PHP в пример. Глаз режет.

Офлайн

#7 Ноя. 23, 2015 17:57:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Почему в Python нет интерполяции строк?

snake_eater
надо изучить язык шаблонизатора
Ужас! Потратить целых два часа!

4kpt_III
Ну и не приводите PHP в пример
Не все знают, что для ПХП тоже есть шаблонизаторы. Сами пэхэпэшники не хотят смешивать в одну кучу логику и отображение, но зачем то активно рекламируют эту заразу где только можно.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version