Я использую Jinja2 в качестве механизма шаблона веб-сайта и все вспомогательные функции, используемые в шаблонах, которые я реализовал как макросы, но для одного. Это код Python:Python lambdas in Jinja2
def arrow_class_from_deg(angle):
if angle is None:
return ''
arrow_directions = [
(0, 'n'), (45, 'ne'), (90, 'e'), (135, 'se'), (180, 's'),
(225, 'sw'), (270, 'w'), (315, 'nw'), (360, 'n')
]
return min(arrow_directions, key=lambda (ang, _): abs(ang - angle))[1]
Он возвращает класс CSS для стрелки, ближайшей к указанному углу. Эта функция используется (и будет использоваться) только в шаблонах, поэтому имеет смысл реализовывать ее в шаблонах, а именно в макросе. Однако, пытаясь сделать это, я заметил, что Jinja2, похоже, не поддерживает Python lambdas. Это правда, и если да, то как лучше писать эту функцию (надеюсь, цикл здесь не нужен)?
Таким образом, невозможно реализовать в шаблонах? – aplavin