Python / print() / Exibir valores como texto

Em Python, print() converte valores em texto e normalmente escreve na saída padrão. Insere espaços entre valores e uma quebra de linha no final; sep, end, file e flush controlam esse comportamento. Retorna None, não o texto exibido.

Saída básica e aspas

A assinatura é print(*objects, sep=' ', end='\n', file=None, flush=False). *objects permite vários valores. Sem arquivo explícito, a saída padrão sys.stdout normalmente envia texto ao terminal ou à janela de execução da IDE. Consulte as regras na referência de print().

Use Python 3. Salve cada exemplo completo em UTF-8 como print_example.py e execute python print_example.py, ou python3 conforme sua instalação. Substitua o conteúdo para testar cada exemplo independentemente.

print("Hello")
print('Hello')
print("'Hello'")
print('"Hello"')
print("count", 3, True, None)

Resultado esperado:

Hello
Hello
'Hello'
"Hello"
count 3 True None

Aspas simples e duplas delimitam strings e não aparecem como parte do texto. Para imprimir aspas, use o outro tipo ao redor. Vários argumentos permitem misturar números e strings sem concatenar com +. Sem valores, print() escreve apenas a quebra de linha padrão.

sep separa valores e end termina a chamada

sep aparece entre os argumentos da mesma chamada; end, depois do último valor. Use end="" para omitir a quebra ou end=" " para ligar a próxima saída com um espaço.

print("A", "B", sep="-", end=" | ")
print("C")
values = ["A", "B"]
print(values, sep="-")
print(*values, sep="-")
A-B | C
['A', 'B']
A-B

A primeira chamada escreve A-B | e a próxima acrescenta C na mesma linha. Uma lista passada como um único argumento mostra sua representação; sep não altera sua formatação interna. Desempacote *values para passar os elementos separadamente. Omita uma opção para restaurar seu padrão.

Formatação e retorno são coisas diferentes

Monte uma string para controlar casas decimais ou a organização de uma frase. O exemplo usa o formato de f-string :.2f para exibir duas casas decimais.

price = 12.5
quantity = 3
message = f"Total: {price * quantity:.2f}"
result = print(message)
print(result)
Total: 37.50
None

message guarda o texto; result recebe None. Use return para entregar um cálculo a outro código e deixe a exibição a cargo de quem chama. Exibir duas casas decimais não muda a precisão do valor numérico original.

Escrever um arquivo UTF-8 com file

Passe um objeto de arquivo de texto gravável como file. Este exemplo completo escreve e lê report.txt em uma pasta temporária, sem sobrescrever arquivos existentes, e limpa os dados ao terminar. Não exige pacotes adicionais.

from pathlib import Path
from tempfile import TemporaryDirectory

with TemporaryDirectory() as folder:
    path = Path(folder) / "report.txt"
    with path.open("w", encoding="utf-8") as output:
        print("Alpha", 10, file=output)
    with path.open("a", encoding="utf-8") as output:
        print("Beta", 20, file=output)
    print(path.read_text(encoding="utf-8"), end="")
Alpha 10
Beta 20

"w" cria ou esvazia um arquivo; "a" acrescenta ao final. Cada bloco with fecha seu arquivo. O último end="" evita somar uma quebra às já lidas. Confira caminhos, permissões e modos e codificação de arquivos antes de adaptar para um arquivo real.

Capturar texto e entender TypeError

StringIO funciona como arquivo de texto em memória. Passe file=output para reutilizar funções de impressão e chame getvalue() antes de fechar. Uma f-string é mais direta para montar apenas uma frase.

from io import BytesIO, StringIO

with StringIO() as output:
    print("A", "B", sep="-", file=output)
    text = output.getvalue()
print(repr(text))

try:
    print("A", "B", sep=1)
except TypeError:
    print("TypeError: sep")

with BytesIO() as output:
    try:
        print("text", file=output)
    except TypeError:
        print("TypeError: binary stream")
'A-B\n'
TypeError: sep
TypeError: binary stream

O \n mostrado por repr() é a quebra capturada. sep e end devem ser strings ou None para usar os padrões; números são inválidos. BytesIO é um fluxo binário e não aceita as escritas de texto de print(). Codifique explicitamente e use uma API de escrita binária para dados binários.

Exibir progresso sem quebra com flush

A saída pode ficar em um buffer antes de ser entregue. Progresso sem quebras e saída para arquivos ou pipes podem aparecer em momentos inesperados. flush=True pede que o destino esvazie seu buffer.

for number in range(3):
    print(number, end=" ", flush=True)
print("done")
0 1 2 done

Os caracteres finais são os exibidos acima, mas o momento da atualização depende do terminal, da IDE e do destino. flush não adiciona linha nem limpa a tela e não garante armazenamento persistente em disco. Use os padrões normalmente e solicite o esvaziamento onde atualizações intermediárias forem necessárias.