Python 什么是「;“语境”;在Mako?

Python 什么是「;“语境”;在Mako?,python,mako,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) 在本例中,以kwarg形式传递给渲染的任何内容都将作为模板传

python中的上下文是什么,特别是
**context
是什么意思?这是在当前上下文中传递变量的一种方法吗?最好提供一个代码示例

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

在本例中,以kwarg形式传递给
渲染的任何内容都将作为模板传递给模板以进行渲染

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

 context = {'var1': v}
您的模板的代码如下

$(var1)
它会打印v


Mako通过查看
Context
,解决了这个问题,
***
操作符在函数调用中出现时,将字典转换为函数的一组关键字参数。当它出现在函数定义中时,它会将一组关键字参数转换为一个函数,并将其转换为字典。例如:

>>> 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}

单词
context
在Python中有多种用途(例如
decimal
context和context管理器)。您需要为问题提供更多的上下文。在任何情况下,所有这些都与
**
运算符无关,这只是为函数提供字典作为关键字的语法。好的,谢谢,这是如何从mako.template导入template=template('var1=${var1}'),用于范围内的v(1,5):上下文={'var1':v}打印模板。呈现(**context)当然,请原谅我的无知,我真的在试图理解传递**上下文在这种情况下的作用。我知道你在说什么,但试图理解这段代码。应该注意的是,这并不是特定于模板的。这是一个Python功能,使用了很多,在这种特殊情况下,支持显式地使用关键字,而不是为其构造单独的dict。正确的kwargs/
**
不是模板,但上下文是。@user1247384,这有帮助吗?或者Nix的答案有帮助吗?如果知道这个问题是否得到了回答,那就太好了。