iter 函数还有一个鲜为人知的用法:传入两个参数,使用常规的函数或任何可调用的对象创建迭代器。这样使用时,第一个参数必须是可调用的对象,用于不断调用(没有参数),产出各个值;第二个值是哨符,这是个标记值,当可调用的对象返回这个值时,触发迭代器抛出 StopIteration 异常,而不产出哨符
# -*- coding:utf-8 -*-
from random import randint
def d6():
return randint(1, 6)
if __name__ == '__main__':
d6_iter = iter(d6, 6)
for roll in d6_iter:
print(roll)
print(6)
4
3
6
with open("./deep_iter/deep_iter.py") as fp:
for line in iter(fp.readline, "\n"):
print(line)