我有
<%!
from __future__ import division
%>
在我的模板文件的最顶端。 我得到的错误:
SyntaxError: from __future__ imports must occur at the beginning of the file
什么是这样做的正确方法?
我有
<%!
from __future__ import division
%>
在我的模板文件的最顶端。 我得到的错误:
SyntaxError: from __future__ imports must occur at the beginning of the file
什么是这样做的正确方法?
您不能使用from __future__ import
的真子模板声明。 在所有。
这是因为Mako的模板编译python文件,并且为了这个工作,它设置了一些初步的结构在那个Python文件的顶部:
# -*- encoding:ascii -*-
from mako import runtime, filters, cache
UNDEFINED = runtime.UNDEFINED
__M_dict_builtin = dict
__M_locals_builtin = locals
_magic_number = 7
_modified_time = 1348257499.1626351
_template_filename = '/tmp/mako.txt'
_template_uri = '/tmp/mako.txt'
_source_encoding = 'ascii'
_exports = []
只有这样,初始设置后,从本身包含模板的任何代码。 您from __future__ import division
将永远不会被放在首位。
您还可以使用由铸造的一个操作数浮点除法/
除法运算符为float:
>>> 1 / 2
0
>>> float(1) / 2
0.5
只要你遵循的解决方法,你可以无需做精division
今后进口。
从导入__future__
将是整洁,但我想不出如何使它工作 (也许有人谁更熟悉的马可的内部即可) 。 马亭解释了为什么它是不可能的。 我可以建议一对夫妇的工作,虽然各地。
如果可能的话,做到分工模板之外,并把结果语境。 这会将我的个人喜好,以保持尽可能多的逻辑从模板尽可能的。
如果这不是一个选项,还有的哈克解决方案,将您的操作数浮动。 如果你需要做的这个部门在很多不同的地方,你可以在模块级块添加一个功能:
<%!
def div(a, b):
return float(a) / float(b)
%>
绝对比你脑子里想的是什么,但它会工作那么优雅。