Когда использовать Механизм Шаблонной обработки в Python?

Я понимаю, что этот вопрос старый (наткнулся на него в Google), но что-то вроде следующего гораздо проще и понятнее, чем любой из огромных сложных предложений, и использует только нарезку:

def chunker(iterable, chunksize):
    for i,c in enumerate(iterable[::chunksize]):
        yield iterable[i*chunksize:(i+1)*chunksize]

>>> for chunk in chunker(range(0,100), 10):
...     print list(chunk)
... 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
... etc ...
5
задан solarce 23 June 2009 в 04:29
поделиться

3 ответа

Как говорит @mikem, шаблоны помогают генерировать любую форму вывода, которая вам нравится, в правильных условиях. По сути, первая значимая вещь, которую я когда-либо написал на Python, была система шаблонов - YAPTU , для еще одной утилиты создания шаблонов Python - и это было 8+ лет назад, прежде чем другие хорошие такие системы существовали ... вскоре после того, как я удостоился чести усовершенствовать их не менее чем Питером Норвигом (см. здесь ), и теперь он насчитывает почти 2000 просмотров в поисковых системах; -).

Сегодняшние. движки шаблонов намного лучше во многих отношениях (хотя большинство из них довольно специализированы, особенно для вывода HTML), но основная идея остается - зачем возиться с множеством операторов print и жестко запрограммированных строк в коде Python , когда это' Еще проще поместить строки в редактируемые файлы шаблонов? Если вы когда-нибудь захотите (например) иметь возможность выводить сообщения на французском, английском или итальянском языках (это было изначальной мотивацией YAPTU во время интенсивных выходных хакерских атак, когда я впервые познакомился с Python ...! -), возможность просто получить ваши шаблоны из нужного каталога (где текст переведен соответствующим образом) сделает все НАСТОЛЬКО проще !!!

По сути, я думаю, что система шаблонов, скорее всего, будет хорошей идеей всякий раз, когда вы выводите текстовый материал. Я использовал YAPTU или его адаптации, например, для плавного переключения между JSON, XML и удобочитаемым (на самом деле HTML) выводом; действительно хорошая система шаблонов в наши дни должна быть в состоянии выйти за рамки "текстового" limit и вывод в protobuf или другом формате двоичной сериализации.

Какая система шаблонов лучше всего зависит от вашей конкретной ситуации - на вашем месте я бы изучил (и поэкспериментировал) с некоторыми из них , тем не мение. Некоторые разработаны для случаев, когда дизайнеры пользовательского интерфейса (которые не умеют программировать) должны их редактировать, другие - только для использования программистами; многие из них специализируются на HTML, некоторые - на XML, другие - в более общем плане; и т. д. и т. д. Но НЕКОТОРЫЕ одно из них (или ваш собственный Еще один! -) обязательно будет лучше, чем связка print s! -)

t программа) должны редактировать их, другие только для использования программистом; многие из них специализируются на HTML, некоторые - на XML, другие - в более общем плане; и т. д. и т. д. Но НЕКОТОРЫЕ одно из них (или ваш собственный Еще один! -) обязательно будет лучше, чем связка print s! -)

t программа) должны редактировать их, другие только для использования программистом; многие из них специализируются на HTML, некоторые - на XML, другие - в более общем плане; и т. д. и т. д. Но НЕКОТОРЫЕ одно из них (или ваш собственный Еще один! -) обязательно будет лучше, чем связка print s! -)

8
ответ дан 13 December 2019 в 19:33
поделиться

Механизм создания шаблонов работает с шаблонами для программного создания артефактов. В шаблоне указывается скелет артефакта, и программа заполняет пробелы. Его можно использовать для генерации практически всего, будь то HTML, какой-нибудь сценарий (например, файл SPEC RPM), код Python, который может быть выполнен позже, и т. Д.

3
ответ дан 13 December 2019 в 19:33
поделиться

Проще говоря, создание шаблонов позволяет вам легко написать вручную читаемый документ и добавить очень простая разметка для определения областей, которые должны быть заменены переменными, области, которая должна повторяться, и т. д.

Обычно язык шаблонов может выполнять только базовую «логику шаблона», то есть достаточно логики, чтобы повлиять на макет документа, но не достаточно, чтобы повлиять на данные, которые передаются в шаблон для заполнения документа.

0
ответ дан 13 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: