为什么使用 `iter` 函数的双参数形式而不是 while 循环?

Why use the two-argument form of the `iter` function instead of a while loop?

我在 python 中发现了 iter 内置函数,这是我以前从未见过的。它给出的 "real-world" 示例正在读取一个大文件:

from functools import partial
with open('mydata.db', 'rb') as f:
    for block in iter(partial(f.read, 64), b''):
        process_block(block)

但是,似乎可以使用基本的 while 循环来实现相同的效果,而不必使用花哨的函数(除非我弄错了)--

with open('mydata.db') as f:
    while True:
        block = f.read(50)
        if not block: break
        process_block(block)

使用iter方法有什么好处?

iter 的双参数版本是一个方便的函数,有助于编写更简洁的代码。与您包含的等效 while 循环相比,它没有功能优势。