国际访客建议访问 Primers 编程伙伴 国际版站点 > Python 教程 > iter 以获得更好的体验。

# Python 的内置函数 iter

请查看 Python 内建函数列表 了解更多相关 API。

说明:获取可迭代对象的迭代器。

# 函数说明

def iter(iterable):
    '''
    获取可迭代对象的迭代器

    :param iterable: 一个可迭代对象
    :return: 参数的迭代器
    '''

!subtitle:说明

通过调用该对象的 __iter__ 方法,获取可迭代对象的迭代器。

!subtitle:参数

  • iterable - 要获取迭代器的可迭代对象

!subtitle:返回值

可迭代对象的迭代器


def iter(iterable, sentinel):
    '''
    获取可迭代对象的迭代器

    :param iterable: 一个可迭代对象
    :param sentinel: 哨兵值
    :return: 参数的迭代器
    '''

!subtitle:说明

创建一个特殊迭代器,不会调用可迭代对象的 __iter__ 方法。

iterable 参数必须是一个可调用对象,每次调用迭代器的 __next__ 方法时,都会不带参数地调用 iterable,并使用该返回值作为 __next__ 的返回值。

如果返回值等于 sentinel,则会产生 StopIteration 异常,用于通知迭代结束。

!subtitle:参数

  • iterable - 要获取迭代器的可迭代对象

  • sentinel - 哨兵值

!subtitle:返回值

可迭代对象的迭代器

# 示例

常规的迭代器与可迭代对象:

运行示例

# 迭代器
class Iterator:
    def __init__(self, stop):
        self.__stop = stop
        self.__current = 0
    
    def __next__(self):
        if self.__current < self.__stop:
            self.__current += 1
            return self.__current - 1
        else:
            raise StopIteration # 产生 StopIteration 异常通知迭代结束

# 可迭代对象
class Iterable:
    def __init__(self, stop):
        self.__iterator = Iterator(stop)

    def __iter__(self):
        return self.__iterator

# 创建可迭代对象
iterable = Iterable(10)

# 获取迭代器,没有哨兵值
iterator = iter(iterable)
print(iterator)

# 迭代
while (n := next(iterator, None)) != None:
    print(n)

可调用的可迭代对象与哨兵值:

运行示例

# 可迭代对象
class Iterable:
    def __init__(self):
        self.__current = 0

    # 使用 __call__ 代替迭代器
    def __call__(self):
        self.__current += 1
        return self.__current - 1

# 创建可迭代对象
iterable = Iterable()

# 获取迭代器,哨兵值为 5
iterator = iter(iterable, 5)
print(iterator)

# 迭代
while (n := next(iterator, None)) != None:
    print(n)

# 推荐阅读

本文 更新于: 2025-11-27 09:37:59 创建于: 2025-11-27 09:37:59