无法同时深度复制和追加 etree 元素
Can't deepcopy and append etree element at same time
我希望有人能解释这种行为,试图弄清楚我的代码出了什么问题让我很头疼。
假设我们像这样设置了一些简单的 etree 元素
from copy import deepcopy
from lxml import etree
elem1=etree.Element('e1')
elem2=etree.Element('e2')
如果我这样做,
elem_copy=deepcopy(elem1).append(elem2)
elem_copy
结果为 NoneType
但是,如果我只是像这样分解步骤
elem_copy=deepcopy(elem1)
elem_copy.append(elem2)
我通过 elem_copy
中的新元素和 elem2
中的新元素作为子元素获得了预期的行为。
谁能解释这是为什么?
第一种情况
elem_copy=deepcopy(elem1).append(elem2)
append
的结果,即 None
被分配回 elem_copy
第二种情况
elem_copy=deepcopy(elem1)
elem_copy.append(elem2)
append
的结果未分配回 elem_copy
。因此,elem_copy
具有 deepcopy
返回的元素,并附加了第二个元素。
希望对您有所帮助。
我希望有人能解释这种行为,试图弄清楚我的代码出了什么问题让我很头疼。
假设我们像这样设置了一些简单的 etree 元素
from copy import deepcopy
from lxml import etree
elem1=etree.Element('e1')
elem2=etree.Element('e2')
如果我这样做,
elem_copy=deepcopy(elem1).append(elem2)
elem_copy
结果为 NoneType
但是,如果我只是像这样分解步骤
elem_copy=deepcopy(elem1)
elem_copy.append(elem2)
我通过 elem_copy
中的新元素和 elem2
中的新元素作为子元素获得了预期的行为。
谁能解释这是为什么?
第一种情况
elem_copy=deepcopy(elem1).append(elem2)
append
的结果,即 None
被分配回 elem_copy
第二种情况
elem_copy=deepcopy(elem1)
elem_copy.append(elem2)
append
的结果未分配回 elem_copy
。因此,elem_copy
具有 deepcopy
返回的元素,并附加了第二个元素。
希望对您有所帮助。