Itertools.product avalia seus argumentos preguiçosamente?

O seguinte nunca imprime nada no Python 3.6

from itertools import product, count

for f in product(count(), [1,2]): 
    print(f)

Em vez disso, apenas fica lá e queima a CPU. A questão parece ser queproduct nunca retorna um iterador se estiver em um espaço infinito, porque avalia a totalidadeproduct primeiro. Isso é surpreendente, dado que oproduct deveria ser um gerador.

Eu esperava que isso começasse a contar (até o infinito), algo como o comportamento desse geradordiretamente dos documentos):

for tup in ((x,y) for x in count() for y in [1,2]):
    print(tup)

Mas enquanto meu gerador começa a contar imediatamente, aquele usandoproduct nunca conta.

Outras ferramentas emitertools faça o que eu esperaria. Por exemplo, o seguinte:

for f in takewhile(lambda x: True, count()): 
    print(f)

imprimirá um fluxo de números porquetakewhile é preguiçoso.

questionAnswers(0)

yourAnswerToTheQuestion