【问题标题】:How to use mako template for divide?如何使用mako模板进行划分?
【发布时间】:2013-08-20 21:07:47
【问题描述】:

假设我有两个变量“一”和“二”,它们分别等于 1 和 2。如果可能的话,我怎样才能把它们分成一个 mako 模板?我想要类似的东西:

${"{0:.2f}".format(one/two)}

我要在模板中输出的结果是:0.50

我正在使用 python 2.x。

【问题讨论】:

  • 试试:${"{0:.2f}".format(one//two)}
  • @GrijeshChauhan 这会在 2.x 和 3.x 中强制进行整数除法...所以在这种情况下无济于事 ;)
  • 结果显示为0后出现小于0的任何东西。有没有办法让它不做整数除法而使用小数?
  • @JonClements 我们可以使用${"{0:.2f}".format(float(one)/two)} 吗?正如我们在 C 中使用的那样
  • @GrijeshChauhan 是 - 或 operator.truediv(one, two) - 但亚历克斯在这里有正确的方法

标签: python mako


【解决方案1】:

您需要将division 添加到Templatefuture_imports 参数:

>>> from mako.template import Template
>>> print Template("${a/b}").render(a=1, b=2)
0
>>> print Template("${a/b}", future_imports=['division']).render(a=1, b=2)
0.5
>>> print Template("${'{0:.2f}'.format(a/b)}", future_imports=["division"]).render(a=1, b=2)
0.50

引用docs:

future_imports – 要从 __future__ 导入的名称字符串列表。这些 将被连接成一个逗号分隔的字符串并插入到 模板的开头,例如futures_imports=['FOO', 'BAR'] 结果为from __future__ import FOO, BAR。如果你有兴趣 使用新除法运算符之类的功能,您必须使用 future_imports 将其传达给渲染器,否则导入 不会作为生成代码中的第一个执行语句出现 因此不会产生预期的效果。

【讨论】:

  • TypeError: __init__() 得到了一个意外的关键字参数“future_imports”?
  • 对我来说很好的材料!我为这个页面添加了书签,因为它现在对我来说有点复杂。
  • @Rolando mako.__version__? :)
  • @Rolando 请升级到最新版本。 future_imports0.8.0 中引入:makotemplates.org/CHANGES
猜你喜欢
  • 2010-11-25
  • 2011-01-22
  • 1970-01-01
  • 2011-04-16
  • 2015-04-09
  • 2010-09-28
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多