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.




