我使用 Jinja2 作为网站模板引擎,模板中使用的所有辅助函数都以宏的形式实现,但仅用于一个。这是它的 Python 代码:
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 类。这个函数(并且将会)只在模板中使用,因此在模板中实现 in 也是有意义的,即作为宏。但是,尝试这样做时,我注意到 Jinja2 似乎不支持 Python lambdas。这是真的吗,如果是,那么如何更好地编写这个函数(我希望这里不需要循环)?