cElementTree和ElementTree有什么区别?

31 投票
5 回答
18196 浏览
提问于 2025-04-15 19:49

我对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版本吧。

撰写回答