本系列将会陆续整理分享一些的Python内置函数。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_built-in_functions
iter(iterable)
iter(callable, sentinel)
-
iterable:一个可以返回迭代器的对象,如列表、元组、字符串、集合、字典等; -
callable:一个无参数的可调用对象(例如函数); -
sentinel:可选参数,用于指定一个哨兵值。当迭代对象返回该哨兵值时,迭代器会停止迭代。该参数通常用于文件读取等场景。
返回值:
当使用 iter() 函数时,其行为会根据是否提供第二个参数而有所不同。下面是一些使用 iter() 函数的示例:
-
没有第二个参数:
-
示例 1:可迭代协议
my_list = [1, 2, 3]
iterator = iter(my_list)
print(next(iterator)) # 输出: 1
print(next(iterator)) # 输出: 2
print(next(iterator)) # 输出: 3
print(next(iterator)) # 抛出 StopIteration 异常
-
示例 2:序列协议
如果对象没有 __iter__() 方法,它仍然可以通过 __getitem__() 方法来支持整数索引的序列协议来实现可迭代。例如:
class MySequence:
def __getitem__(self, index):
if index >= 2:
raise IndexError
return index
seq = MySequence()
it = iter(seq)
print(next(it)) # 输出: 0
print(next(it)) # 输出: 1
print(next(it)) # 抛出 StopIteration 异常
-
提供第二个参数(哨兵):
import io
# 使用 StringIO 模拟创建一个文件对象
file = io.StringIO('hellonworldn!')
# 使用 iter() 函数创建迭代器,并指定哨兵值
it = iter(file.readline, '')
# 读取文件内容
for line in it:
print(line, end='')
# 输出:hello
# world
# !


本篇文章来源于微信公众号: 码农设计师