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.