加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Jinja2中的宏递归

发布时间:2020-12-16 23:47:42 所属栏目:Python 来源:网络整理
导读:我正在使用Jinja 2.8模板引擎.我正在尝试编写一个模板,它将遍历树结构并从该树输出信息.要做到这一点,我试图使用一个调用自己的宏,似乎不起作用. 这个简单的递归宏也不起作用: {% macro factorial(n) %} {% if n 1 %} {{ n }} * {{ factorial(n-1) }} {% en

我正在使用Jinja 2.8模板引擎.我正在尝试编写一个模板,它将遍历树结构并从该树输出信息.要做到这一点,我试图使用一个调用自己的宏,似乎不起作用.

这个简单的递归宏也不起作用:

{% macro factorial(n) %}
  {% if n > 1 %}
    {{ n }} * {{ factorial(n-1) }}
  {% endif %}
{% endmacro %}

{{ factorial(3) }}

在Jinja代码的第三行引发运行跟随错误.

UndefinedError: 'factorial' is undefined

Jinja是否支持递归宏?如何在Jinja中遍历嵌套数据结构?

最佳答案
Jinja支持递归宏.
关于阶乘代码,以下代码适用于我:

{% macro factorial(n,return_value) -%}
--{{n}}
  {%- if n > 1 -%}
    {%- set return_value = n * return_value %}      {#- perform operations on the variable return_value and send it to next stage -#}
    {{- factorial(n-1,return_value) -}}

  {%- else -%}      {# Output the return value at base case #}
    {{ return_value }}
  {%- endif %}

{%- endmacro %}

{{ factorial(7,1) }} 

我得到的输出是

--7--6--5--4--3--2--1  
    5040  

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读