何时选择collections.Python中的Iterable或'__iter__'属性?

时间:2018-12-20 16:07:19

标签: python iterable

在此question中,有很多方法来测试可迭代项。两个解决方案是:

  1. hasattr(object, '__iter__')
  2. isinstance(object, collections.Iterable)

他们似乎都在做同样的事情,我找不到能使他们与众不同的文档。有什么区别,为什么我要选择一个呢?

1 个答案:

答案 0 :(得分:4)

pythonic的方式是

  • 假设它是可迭代的
  • 如果不是,则捕获异常

但是,请按常识使用它。也就是说,只有在您有理由相信您的对象在大多数情况下都是可迭代的时,才执行此操作。

  

也请注意将字符串视为可迭代的字符串,但在大多数实际使用情况下,不应这样做。在这种情况下,做法是显式检查isinstance(.., str)