gpt4 book ai didi

python - 在 python 3 中使用 cElementTree

转载 作者:行者123 更新时间:2023-12-05 03:13:21 27 4
gpt4 key购买 nike

cElementTree 是 XML API ElementTree 的快速 C 实现。在 python 2 中,您将显式加载它(将其别名为 ElementTree),但在 the Python 3 docs 中我读了这个:

Changed in version 3.3: This module will use a fast implementation whenever available. The xml.etree.cElementTree module is deprecated.

事实上,xml.etree.cElementTree.py 现在只是从 xml.etree.ElementTree 导入。问题:如何获得“快速实现”?我如何判断它是否“可用”,如果由于某种原因它没有与 python 一起分发,我从哪里得到它?

在我的程序中对 ElementTree 的自省(introspection)表明我正在获取 python 版本。在 ElementTree.py 中,我没有发现 C 版本的任何 Hook 。它何时以及如何发挥作用? ElementTree 文档没有提供任何线索,也没有在 google 和 stackoverflow 上进行快速搜索。

最佳答案

来自“What's New in Python 3.3”文档:

The xml.etree.ElementTree module now imports its C accelerator by default; there is no longer a need to explicitly import xml.etree.cElementTree (this module stays for backwards compatibility, but is now deprecated). In addition, the iter family of methods of Element has been optimized (rewritten in C). The module’s documentation has also been greatly improved with added examples and a more detailed reference.

虽然看起来好像没有发生,但导入是悄无声息地进行的。您将在 ElelementTree.py 中找到一段代码,内容为

# Import the C accelerators
try:
# Element, SubElement, ParseError, TreeBuilder, XMLParser
from _elementtree import *
except ImportError:
pass
else:
# Overwrite 'ElementTree.parse' and 'iterparse' to use the C XMLParser

class ElementTree(ElementTree):
...

似乎没有一种简单的方法来验证是否正在导入 C 模块,但我认为您可以接受它。如果您真的担心(我个人不会担心),那么您可以在其中修补 print 以进行检查。

关于python - 在 python 3 中使用 cElementTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30558480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com