Hum*_*art 4 python collections python-3.x
我可以想到两种方法来判断一个对象是否是一个序列:
hasattr(object, '__iter__')。iter(object)引发TypeError.由于请求宽恕而不是请求许可是最 Pythonic 的,所以我会使用第二个习惯用法,尽管我认为它更难看(此外,一旦捕获到TypeError确定对象不是序列,就会引发异常产生不需要的“双异常”堆栈跟踪)。
最终,检查对象是否定义了__iter__方法是否足以确定对象是否是序列?(例如,在旧版本的 Python 中,str没有定义__iter__方法;我还听说某些对象也可以简单地定义和使用,__getitem__而不需要定义__iter__and 充当序列。)或者是定义序列的__iter__ 契约?
| 归档时间: |
|
| 查看次数: |
1084 次 |
| 最近记录: |