Este é um tópico muito antigo, mas aqui está uma resposta muito detalhada e um código de exemplo.
\ré a representação de sequência de retorno de carro do conjunto de caracteres ASCII. É o mesmo que octal 015[ chr(0o15)] ou hexidecimal 0d[ chr(0x0d)] ou decimal 13[ chr(13)]. Veja man asciipara uma leitura chata. É ( \r) uma representação bastante portátil e é fácil o suficiente para as pessoas lerem. Simplesmente significa mover o carro na máquina de escrever de volta ao início sem avançar o papel. É a CRparte CRLFque significa retorno de carro e avanço de linha .
print()é uma função no Python 3. No Python 2 (qualquer versão que você esteja interessado em usar), printpode ser forçado a entrar em uma função importando sua definição do __future__módulo. O benefício da printfunção é que você pode especificar o que imprimir no final, substituindo o comportamento padrão de \nimprimir uma nova linha no final de cada print()chamada.
sys.stdout.flushdiz ao Python para liberar a saída da saída padrão , que é onde você envia a saída, a print()menos que você especifique o contrário. Você também pode obter o mesmo comportamento executando python -uou definindo a variável de ambiente PYTHONUNBUFFERED=1, ignorando as chamadas import syse sys.stdout.flush(). A quantia que você ganha fazendo isso é quase exatamente zero e não é muito fácil de depurar se você esquecer convenientemente que precisa fazer essa etapa antes que seu aplicativo se comporte corretamente.
E uma amostra. Observe que isso funciona perfeitamente no Python 2 ou 3.
from __future__ import print_function
import sys
import time
ANS = 42
FACTORS = {n for n in range(1, ANS + 1) if ANS % n == 0}
for i in range(1, ANS + 1):
if i in FACTORS:
print('\r{0:d}'.format(i), end='')
sys.stdout.flush()
time.sleep(ANS / 100.0)
else:
print()