【发布时间】:2016-10-26 11:11:55
【问题描述】:
是否有所有模块都遵循的一般规则?
In my case,我正在使用Python xml.etree library
假设我这样做:
for el in root.iter('*'):
for subel in el:
el.remove(subel)
这会破坏el 迭代器吗?
【问题讨论】:
-
不......任何人都可以实现自己的迭代器,它可以真正做任何事情......只要它返回的是可迭代的
-
经验法则是“不要修改任何你正在迭代的东西”。很少有人提供明确的 C++ 风格的迭代器失效规则。
-
@mgilson 是的,哎呀。
-
@user2357112 如何测试任何给定 Python 模块的具体实现是什么?我不确定我是否可以,因为只有有效的测试是“是否失败”,因为如果在这个实例中没有失败并不意味着它在其他实例中不会失败。
-
是的,一般来说stackoverflow.com/questions/37702011/…很糟糕