我希望有人可以解释这种行为,这让我非常头疼,试图找出我的代码出了什么问题。
假设我们设置了一些简单的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
中的新元素作为子元素获得了预期的行为。
任何人都可以解释为什么会这样吗?
答案 0 :(得分:3)
在第一种情况下
elem_copy=deepcopy(elem1).append(elem2)
append
的结果,即None
被分配回elem_copy
在第二种情况下
elem_copy=deepcopy(elem1)
elem_copy.append(elem2)
append
的结果未被分配回elem_copy
。因此,elem_copy
具有deepcopy
返回的元素,并附加第二个元素。
希望有所帮助。