python中的上下文是什麼,特別是**context
是什麼意思?這是一種在當前上下文中傳遞變量的方法嗎?代碼示例將非常感謝。Mako中的「背景」是什麼?
from mako.template import Template
template = Template('var1 = ${var1}')
for v in range(1, 5):
context = {'var1': v}
print template.render(**context)
python中的上下文是什麼,特別是**context
是什麼意思?這是一種在當前上下文中傳遞變量的方法嗎?代碼示例將非常感謝。Mako中的「背景」是什麼?
from mako.template import Template
template = Template('var1 = ${var1}')
for v in range(1, 5):
context = {'var1': v}
print template.render(**context)
你的情況,任何你傳遞給render
作爲kwarg是爲了呈現爲Context傳遞到您的模板。
上下文表示渲染時可用於頁面/模板的數據字典。所以,當你做這樣的事情
context = {'var1': v}
和你的模板有一個像
$(var1)
代碼這將打印v
Mako的解決了這個由放眼Context
,這僅僅是包裝一個_data與kwargs通過render
傳遞給它。
應該指出的是,這不是特定於模板的。這是一個使用了很多的Python特性,在這種特殊情況下,明確提供關鍵字而不是爲它構造一個單獨的字典會更合理。 – 2012-03-04 15:39:08
正確的kwargs /'**'不是模板,但是'context'是。 – Nix 2012-03-04 15:40:09
**
運算符在出現在函數調用中時將字典轉換爲函數的一組關鍵字參數。當它出現在一個函數定義中時,它將一組關鍵字參數轉換成一個函數到一個字典中。例如:
>>> 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}
@ user1247384,這有幫助嗎?還是尼克斯的答案?很高興知道這個問題是否得到解答。 – senderle 2012-03-05 12:39:11
「context」這個詞在Python中有多種用法(例如'decimal' context和context manager)。您需要提供更多,更好的問題背景。 – interjay 2012-03-04 15:24:19
在任何情況下,所有這些都與'**'操作符沒有任何關係,這只是將字典作爲關鍵字提供給函數的語法。 – 2012-03-04 15:28:38
好確定感謝,這個怎麼樣 – 2012-03-04 15:35:28