zoukankan      html  css  js  c++  java
  • python 迭代器(一):迭代器基础(一) 语言内部使用 iter(...) 内置函数处理可迭代对象的方式

    简介

    在 Python 中,所有集合都可以迭代。在 Python 语言内部,迭代器用于支持:

    1.for 循环
    2.构建和扩展集合类型
    3.逐行遍历文本文件
    4.列表推导、字典推导和集合推导
    5.元组拆包
    6.调用函数时,使用 * 拆包实参

    语言内部使用 iter(...) 内置函数处理可迭代对象的方式

    序列可以迭代的原因:iter函数
    解释器需要迭代对象 x 时,会自动调用 iter(x)。
    内置的 iter 函数有以下作用。
    (1) 检查对象是否实现了 __iter__ 方法,如果实现了就调用它,获取一个迭代器。
    (2) 如果没有实现 __iter__ 方法,但是实现了 __getitem__ 方法,Python 会创建一个迭代器,尝试按顺序(从索引 0 开始)获取元素。
    (3) 如果尝试失败,Python 抛出 TypeError 异常,通常会提示“C object is not iterable”(C 对象不可迭代),其中 C 是目标对象所属的类。
    任何 Python 序列都可迭代的原因是,它们都实现了 __getitem__ 方法。其实,标准的序列也都实现了 __iter__ 方法,因此你也应该这么做。
    之所以对 __getitem__ 方法做特殊处理,是为了向后兼容,而未来可能不会再这么做(不过,写作本书时还未弃用)。
     
    迭代对象之前显式检查对象是否可迭代或许没必要,毕竟尝试迭代不可迭代的对象时,Python 抛出的异常信息很明确:TypeError: 'C'
    object is not iterable。如果除了抛出 TypeError 异常之外还要做进一步的处理,可以使用 try/except 块,而无需显式检查
    。如果要保存对象,等以后再迭代,或许可以显式检查,因为这种情况可能需要尽早捕获错误。
     
     
  • 相关阅读:
    asp.net 中的viewstate用法?
    .net中 过滤 指定 字符串
    js中replace的用法
    restart
    外部函数
    JQuery实现Ajax 根据商品名称自动显示价格
    ListView中命令行按钮应用;
    GridView中获取行数和列数
    全局应用程序类Global
    如何获取gridview中模板列中控件的值?
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12964807.html
Copyright © 2011-2022 走看看