Mako的“背景”是什么?

时间:2012-03-04 15:21:00

标签: python mako

python中的上下文是什么,特别是**context是什么意思?它是一种在当前上下文中传递变量的方法吗?代码示例将非常受欢迎。

from mako.template import Template
template = Template('var1 = ${var1}')
for v in range(1, 5):
  context = {'var1': v}
  print template.render(**context) 

2 个答案:

答案 0 :(得分:0)

在您的情况下,作为kwarg传递给render的任何内容都会作为Context传递给您的模板以进行渲染。

上下文表示呈现时页面/模板可用的数据字典。所以当你做类似的事情时

 context = {'var1': v}

,您的模板的代码类似于

$(var1)

它会打印v

Mako通过查看Context解决了这个问题,render只是通过{{1}}将一个_data包含在传递给它的kwargs中。

答案 1 :(得分:0)

**运算符在函数调用中出现时,会将字典转换为函数的一组关键字参数。当它出现在函数定义中时,它将一组关键字参数转换为函数到字典中。例如:

>>> d = {'a':0, 'b':1, 'c':2}
>>> def print_my_arguments(**my_arguments):
...     print my_arguments
... 
>>> print_my_arguments(a=0, b=1, c=2)
{'a': 0, 'c': 2, 'b': 1}
>>> print_my_arguments(**d)
{'a': 0, 'c': 2, 'b': 1}