python–Jinja2中的宏递归

python–Jinja2中的宏递归,第1张

概述我正在使用Jinja 2.8模板引擎.我正在尝试编写一个模板,它将遍历树结构并从该树输出信息.要做到这一点,我试图使用一个调用自己的宏,似乎不起作用.这个简单的递归宏也不起作用:{% macro factorial(n) %} {% if n > 1 %} {{ n }} * {{ factorial(n-1) }} {% endif @H_403_0@

我正在使用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  
总结

以上是内存溢出为你收集整理的python – Jinja2中的宏递归全部内容,希望文章能够帮你解决python – Jinja2中的宏递归所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1207695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存