Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Jinja2-复制变量而不是引用它_Python_Jinja2 - Fatal编程技术网

Python Jinja2-复制变量而不是引用它

Python Jinja2-复制变量而不是引用它,python,jinja2,Python,Jinja2,我希望能够在Jinja2 2.10中复制一个变量,而不是仅仅引用它,但找不到一种方法 请参见以下示例: 来自jinja2导入环境 从jinja2.ext导入do env=Environmentextensions=[do] template=env.from_string' {%-set base={elems:{a:aa}}-%} {%-set data={elems:base.elems}-%} {%-do data.elems.update{a:bb}-%} {{base.elems.a}

我希望能够在Jinja2 2.10中复制一个变量,而不是仅仅引用它,但找不到一种方法

请参见以下示例:

来自jinja2导入环境 从jinja2.ext导入do env=Environmentextensions=[do] template=env.from_string' {%-set base={elems:{a:aa}}-%} {%-set data={elems:base.elems}-%} {%-do data.elems.update{a:bb}-%} {{base.elems.a}}-aa应为空 {{data.elems.a}}-bb应为 ' template.render 结果是:“bb-aa预期\nbb-bb预期”

这意味着data.elems不是base.elems的副本,而是对它的引用。 我需要一份data.elems中base.elems的副本

我试过:

基地,获取“元素” 基本|属性'elems' 但这些都不起作用。有没有办法复制Jinja2中的值

$ python q54718238.py
aa - "aa" expected
  bb - "bb" expected
诀窍在于知道Python的许多数据类型都是通过引用实现的。因此,在对象上调用copy可以修复它。注意,我将{%-set data={elems:base.elems}-%}更改为{%-set data={elems:base.elems.copy}-%}

来自jinja2导入环境 从jinja2.ext导入do env=Environmentextensions=[do] template=env.from_string' {%-set base={elems:{a:aa}}-%} {%-set data={elems:base.elems.copy}-%} {%-do data.elems.update{a:bb}-%} {{base.elems.a}}-aa应为空 {{data.elems.a}}-bb应为 ' printtemplate.render
好极了我不知道我能用。在金甲2号物体上复制。