您的位置 首页 编程知识

Python基础:iter函数的两个参数

iter(callable, sentinel)反复调用callable直至其返回值==sentinel,此时…


iter(callable, sentinel)反复调用callable直至其返回值==sentinel,此时停止迭代且不包含哨兵;callable须为无参可调用对象,常用于流式读取如iter(f.readline, ”)或iter(input, ‘quit’)。

Python基础:iter函数的两个参数

Python 中的 iter() 函数通常接收一个参数(),但其实它支持**两个参数的用法**:第一个是**可调用对象(callable)**,第二个是**哨兵值(sentinel)**。这种用法常用于按需读取流式数据(比如文件、网络响应或自定义生成逻辑),直到遇到特定值为止。

两个参数的 iter 是怎么工作的?

当传入两个参数时,iter(callable, sentinel) 会反复调用 callable(),直到其返回值等于 sentinel(注意:用 == 比较,不是 is),此时迭代停止,不包含哨兵值本身。

关键要求:
– 第一个参数必须是**无参 callable**(如函数、lambda、方法绑定等);
– 每次调用它应返回一个值;
– 第二个参数是用于终止的“结束标记”。

典型应用场景:逐行读文件直到空行

比如读取一个,只处理到第一个空行为止:

with open('config.txt') as f:     for line in iter(f.readline, ''):         if line.strip() == '':             break         print(line.rstrip()) 
登录后复制

这里 f.readline 是无参 callable,'' 是哨兵(readline 遇到文件末尾也返回 '')。不过更常见的是用非空哨兵,例如:

明仔PHP零基础(一日通)教程都是PHP基础,全部带详细注释,能让新接触者很容易看懂,和几个基础例子,包括登陆,数组,函数,分页的详解。

Python基础:iter函数的两个参数 338

立即学习“”;

  • 读取用户输入直到输入 'quit'iter(input, 'quit')(注意 Python 3 中 input 是函数)
  • 从队列中持续取值直到收到 Noneiter(queue.get, None)(需确保队列不阻塞,或配合 timeout)

注意事项和常见错误

容易出错的地方:

  • 第一个参数带括号就错了,比如 iter(f.readline(), sentinel) —— 这会立即执行并传入返回值,不是 callable
  • callable 每次必须能被安全调用;如果抛异常,迭代直接中断(不会捕获)
  • 哨兵值必须是可比较的;若 callable 返回自定义对象,需实现 __eq__
  • 无法用于已知长度的容器(如 list、tuple),因为它们不是 callable

本质上,双参数 iter 提供了一种简洁的“条件循环迭代”语法,把 while 循环 + break 的逻辑封装成迭代器,方便配合 for、itertools 或生成器表达式使用。不复杂但容易忽略。

以上就是Python基础:iter函数的两个参数的详细内容,更多请关注php中文网其它相关文章!

相关标签:

大家都在看:

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/17101.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部