传递ElementTree

0 投票
4 回答
895 浏览
提问于 2025-04-15 23:51

在我的程序中,我需要在多个函数中使用一个叫做ElementTree的对象。

更具体来说,我是这样做的:

tree = etree.parse('somefile.xml')

我在程序中传递这个树对象。

我在想,这样做是不是一个好方法,或者我可以这样做:

  1. 创建一个全局的树(我之前是学C++的,知道全局变量不好)
  2. 在需要的地方重新创建这个树。

还是说我现在的做法可以呢?

4 个回答

0

把它传来传去肯定比每次想用的时候都重新创建要好。解析文件这个过程是比较耗费资源的。这里有一些关于使用lxml提高性能的建议。

1

我通常的做法是用ElementTree来解析树状结构,然后把这些复杂的内容转换成一个对象列表,这样后面的代码就可以直接使用这些对象了。这样处理起来简单多了,因为后面的代码不需要知道这些东西最开始是从一个糟糕的xml文件里来的。

1

在Python中(为了让你更容易理解,我会用你熟悉的C++背景来做个类比),所有的对象都是通过引用传递的。因为“树”是一个对象,所以你实际上只是传递了这个对象的引用。如果你有一组相关的方法,它们都是在同一棵树上操作的,那么你可能想要考虑创建一个类,把这个树对象作为类的一个成员。

另外,这里有个快速参考,关于我刚才提到的复杂内容:http://www.testingreflections.com/node/view/5126

撰写回答