在我的程序中,我需要在程序中的各種函數中使用ElementTree對象。繞過ElementTree
更具體地說,我做這個:
tree = etree.parse('somefile.xml')
我身邊路過此樹在我的計劃。
我想知道這是否是一個好方法,或者我可以這樣做:
- 創建一個全局樹(我來自一個 C++背景,我知道全球是 壞)
- 創建在需要的地方再次樹。
或者我的方法好嗎?
在我的程序中,我需要在程序中的各種函數中使用ElementTree對象。繞過ElementTree
更具體地說,我做這個:
tree = etree.parse('somefile.xml')
我身邊路過此樹在我的計劃。
我想知道這是否是一個好方法,或者我可以這樣做:
或者我的方法好嗎?
在Python中,(消除複雜性,爲您的C++背景打個比方),所有對象都通過引用傳遞。由於「樹」是一個對象,所以你只傳遞參考。現在,如果您有一組相關的方法在同一棵樹上操作,您可能需要考慮創建一個具有該樹對象作爲成員的類。
而且,這裏有一個快速參考我掩蓋了上述複雜性:http://www.testingreflections.com/node/view/5126
傳遞它肯定比每次要使用它都要重新創建它更好。解析文件是一項昂貴的操作。 Here are some suggestions for performance improvements with lxml.
通常我所做的就是使用ElementTree解析樹,然後將整個混亂轉換爲對象列表並將其傳遞給對象 - 事後處理更容易,因爲其餘代碼不必意識到這些東西起源於一些可怕的xml文件。
感謝。 – user225312 2010-06-11 14:06:18
不客氣! – gomad 2010-06-14 15:33:49