cElementTree和ElementTree有什么区别?
我对DOM(文档对象模型)了解一点,想学习一下ElementTree。Python 2.6里有一个比较旧的ElementTree实现,但还是可以用。不过,它似乎有两个不同的类:xml.etree.ElementTree和xml.etree.cElementTree。有没有人能帮我解释一下它们之间的区别?谢谢。
5 个回答
20
来自 https://docs.python.org/3/library/xml.etree.elementtree.html:
在3.3版本中进行了更改:这个模块会在有更快的实现时使用它。xml.etree.cElementTree模块已经不再推荐使用。
所以对于Python 3.3及以上版本,只需使用:
import xml.etree.ElementTree as ET
22
不过现在它们是一样的,从Python 3.3开始,在github的源代码中可以看到cElementTree
# cElementTree.py
from xml.etree.ElementTree import *
这只是为了兼容旧版本的代码。
32
这两个库是一样的(功能和接口都一样),不过ElementTree是用Python写的,而cElementTree是用C语言写的。
如果可以的话,建议使用C语言的版本,因为它在解析数据时更快,内存使用也更少,速度比Python版本快15到20倍。
如果你在一个受限制的环境中(比如不允许加载C语言库),那就用Python版本吧。