无法同时深度复制和追加 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 返回的元素,并附加了第二个元素。

希望对您有所帮助。