IPython e REPL se comportam de maneira diferente ao exibir dados sem a função de impressão

Observe que todas as experiências foram realizadas no Python3.4.3 e IPython 5.1.0 (para python3).

Considere uma função que retorna a identidade:

def my_func(): 
    return 1

Agora, essa função é chamada de um loop dentro de uma sessão REPL.

for _ in range(3): 
    my_func()

No IPython, nada é exibido.

In [96]: for _ in range(3): 
    ...:     my_func()
    ...:     

In [97]: 

Mas, no REPL, algo é:

>>> for _ in range(3): 
...     my_func()
... 
1
1
1
>>>
Por que existe uma diferença?

É por causa de algo que o IPython faz? Examinei o bytecode e, em ambos os casos, eles são idênticos. Portanto, não tem nada a ver com a geração de bytecode, mas com a forma como é interpretada em ambos os casos.

questionAnswers(1)

yourAnswerToTheQuestion