Quais são os usos do iter (callable, sentinel)?

Então, eu estava assistindo a palestra de Raymond HettingerTransformando código em belo e python linguístico e ele traz essa forma deiter que eu nunca tinha conhecimento. Seu exemplo é o seguinte:

Ao invés de:

blocks = []
while True:
    block = f.read(32)
    if block == '':
        break
    blocks.append(block)

Usar:

blocks = []
read_block = partial(f.read, 32)
for block in iter(read_block, ''):
    blocks.append(block)

Depois de verificar odocumentação doiter, Encontrei um exemplo semelhante:

with open('mydata.txt') as fp:
    for line in iter(fp.readline, ''):
        process_line(line)

Isso me parece útil, mas eu queria saber se vocês, pythonistas, conhecem algum exemplo dessa construção que não envolva loops de leitura de E / S? Talvez na Biblioteca Padrão?

Eu posso pensar em exemplos bem elaborados, como o seguinte:

>>> def f():
...     f.count += 1
...     return f.count
... 
>>> f.count = 0
>>> list(iter(f,20))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> 

Mas, obviamente, isso não é mais útil que as iteráveis internas. Além disso, parece-me um cheiro de código quando você está atribuindo estado a uma função. Nesse ponto, eu provavelmente deveria estar trabalhando com uma classe, mas se vou escrever uma classe, é melhor implementar o protocolo iterador para o que eu quiser realizar.

questionAnswers(3)

yourAnswerToTheQuestion