栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python中,如何确定对象是否可迭代?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python中,如何确定对象是否可迭代?

  1. 检查是否
    __iter__
    可以处理序列类型,但是对于Python 2中的字符串可能会失败。我也想知道正确的答案,在此之前,这是一种可能性(也适用于字符串):
from __future__ import print_functiontry:    some_object_iterator = iter(some_object)except TypeError as te:    print(some_object, 'is not iterable')

所述

iter
内置的检查的
__iter__
方法或串的情况下的
__getitem__
方法。

  1. 另一种通用的pythonic方法是假定一个可迭代的对象,如果它不适用于给定的对象,则将优雅地失败。Python词汇表:

通过检查对象的方法或属性签名而不是通过与某种类型对象的显式关系来确定对象类型的Python编程风格(“如果它看起来像鸭子,并且像鸭子一样嘎嘎叫,那一定是鸭子。”)通过强调接口经过精心设计的代码(而非特定类型)通过允许多态替换来提高其灵活性。鸭式输入避免使用type()或isinstance()进行测试。取而代之的是,它通常采用EAFP(比授权更容易请求宽恕)风格的编程。

...try:   _ = (e for e in my_object)except TypeError:   print my_object, 'is not iterable'
  1. collections
    模块提供了一些抽象基类,这些基类允许询问类或实例是否提供了特定的功能,例如:
from collections.abc import Iterableif isinstance(e, Iterable):    # e is iterable

但是,这不会检查可通过迭代的类__getitem__。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383635.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号