【问题标题】:What is the difference between getiterator() and iter() wrt to lxmlgetiterator() 和 iter() wrt 到 lxml 有什么区别
【发布时间】:2010-06-19 19:53:52
【问题描述】:

正如问题所说,这之间有什么区别:

x.getiterator()x.iter(),其中 x 是 ElementTree 还是 Element?因为它似乎对两者都有效,我已经尝试过了。

如果我在某处错了,请纠正我。

【问题讨论】:

    标签: python lxml


    【解决方案1】:

    Python documentation for ElementTree 声明 getiterator() 方法从 2.7 版开始已被弃用,并表示要使用 Element.iter()lxml API documentation 声明相同,但也提到 lxml 中 getiterator() 的实现与原始 ElementTree 行为不同。

    有趣的是,文档还指出“如果您想要一个高效的迭代器,请改用 tree.iter() 方法”。请注意“高效”一词,这让我相信getiterator()iter() 之间的实现肯定存在差异,但如果不检查源代码,我不能100% 确定。

    无论如何,如果某些东西已被弃用,很明显他们不想让你使用它。

    【讨论】:

      【解决方案2】:

      getiterator 是此方法的ElementTree 标准拼写; iter 是一个等效的 lxml-only 方法,如果你需要它,它将阻止你的代码在 ElementTree 中工作,并且似乎没有任何可取之处,除了让你不用再为方法名称输入 7 个字符;- )。

      【讨论】:

      • 我很想看看您对我的回答的回复;-)
      • @Bruce,好点子——我没有考虑过 2.7(我相信当时还没有发布)。
      • 啊,我忽略了你的回答是从 6 月开始的 ;-)
      • 这不再有效,请参阅@BrucevanderKooij 的回答。
      猜你喜欢
      • 2021-12-19
      • 2018-04-24
      • 1970-01-01
      相关资源
      最近更新 更多