cElementtree和ElementTree有什么区别?

Hai*_* Vu 15 python xml

我知道一点dom,想了解ElementTree.Python 2.6有一个较旧的ElementTree实现,但仍然可用.但是,看起来它有两个不同的类:xml.etree.ElementTree和xml.etree.cElementTree.有人请你这么善意以他们的分歧来启发我吗?谢谢.

Des*_*egr 28

它是相同的库(相同的API,相同的功能),但ElementTree是用Python实现的,而cElementTree是用C实现的.

如果可以,请使用C实现,因为它针对快速解析和低内存使用进行了优化,并且比Python实现快15-20倍.

如果您处于有限的环境中(不允许加载C库),请使用Python版本.


小智 13

但现在它们与 Python 3.3相同,在 github 源代码cElementTree

# cElementTree.py

从 xml.etree.ElementTree 导入 *

它只是为了向后兼容


Kir*_*hov 9

https://docs.python.org/3/library/xml.etree.elementtree.html

在 3.3 版更改:此模块将在可用时使用快速实现。xml.etree.cElementTree 模块已弃用。

因此,对于 Python 3.3 及更高版本,只需使用:

import xml.etree.ElementTree as ET
Run Code Online (Sandbox Code Playgroud)

  • 这应该可以消除混乱。谢谢您的回答。 (3认同)

Ben*_*end 6

来自http://effbot.org/zone/celementtree.htm:

cElementTree模块是ElementTree API的C实现,针对快速解析和低内存使用进行了优化.在典型文档中,cElementTree比ElementTree的Python版本快15-20倍,并且使用的内存减少了2-5倍


jcd*_*yer 5

ElementTree 是用 python 实现的,而 cElementTree 是用 C 实现的。因此,cElementTree 会更快,但在无法访问 C 的情况下也无法使用,例如在 Jython 或 IronPython 中或在 Google App Engine 上。

从功能上来说,它们应该是等效的。