在我的程序中,我需要在程序中的各种函数中使用ElementTree对象。
更具体地说,我这样做:
tree = etree.parse('somefile.xml')
我正在程序中传递这棵树。
我想知道这是一个好方法,还是我可以这样做:
或者我的方法好吗?
答案 0 :(得分:1)
通常我所做的是使用ElementTree解析树,然后将整个混乱转换为对象列表并将其传递 - 之后更容易处理,因为其余代码不必知道这些东西起源于一些上帝可怕的xml文件。
答案 1 :(得分:1)
在Python中,(消除复杂性,对C ++背景进行类比)所有对象都通过引用传递。由于“树”是一个对象,你只是传递了引用。现在,如果您有一组在同一个树上运行的相关方法,您可能需要考虑创建一个以该树对象作为成员的类。
此外,这里有一个我上面掩盖的复杂性的快速参考:http://www.testingreflections.com/node/view/5126
答案 2 :(得分:0)
传递它肯定比每次想要使用它时重新创建它更好。解析文件是一项昂贵的操作。 Here are some suggestions for performance improvements with lxml.