在python中,可以使用eval('dyn_var_name')
动态创建变量名称
我想在我的mako模板中执行此操作,但下面是示例代码:
from mako.template import Template
print Template("hello ${eval('data{}'.format(0))}!").render(data0="world")
返回NameError: name 'data0' is not defined
,即。变量名仍然是字符串'data0'
,并且不对应于相应的键名data0
; eval()
没有完成它的工作。怎么去完成这个?
答案 0 :(得分:0)
您可以使用pageargs
词典而非eval
:
from mako.template import Template
print Template("hello ${pageargs['data{}'.format(0)]}!").render(data0="world")
但是,从您的示例中可能看起来您可能有一堆变量,每个变量的名称分别为data0
,data1
,data2
等。为什么不将它们作为列表传递给渲染而不是那么多同样命名的变量?类似的东西:
`Template("hello ${data[0]}!").render(data=["world"])`)