Python / print() / Mostrar valores como texto

En Python, print() convierte valores a texto y normalmente escribe en la salida estándar. Inserta espacios entre valores y un salto de línea al final; sep, end, file y flush controlan ese comportamiento. Devuelve None, no el texto mostrado.

Salida básica y comillas

La firma es print(*objects, sep=' ', end='\n', file=None, flush=False). *objects permite varios valores. Sin archivo explícito, la salida estándar sys.stdout suele enviar el texto al terminal o a la ventana de ejecución del IDE. Consulte los argumentos en la referencia de print().

Use Python 3. Guarde cada ejemplo completo en UTF-8 como print_example.py y ejecute python print_example.py, o python3 según su instalación. Cambie el contenido para probar cada ejemplo independientemente.

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

Resultado esperado:

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

Las comillas simples y dobles delimitan cadenas sin mostrarse como parte del texto. Para imprimir comillas, use el otro tipo alrededor. Varios argumentos permiten combinar números y cadenas sin concatenarlos con +. Sin valores, print() escribe únicamente el salto de línea predeterminado.

sep separa valores y end termina la llamada

sep aparece entre argumentos de una llamada y end después del último valor. Use end="" para omitir el salto o end=" " para conectar la siguiente salida con un espacio.

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

La primera llamada escribe A-B | y la siguiente añade C en la misma línea. Una lista pasada como un argumento muestra su representación; sep no cambia su formato interno. Desempaquete *values para pasar elementos separados. Omita una opción para volver a su comportamiento predeterminado.

Formato y valor devuelto son distintos

Construya una cadena para controlar decimales o la disposición de una frase. El ejemplo usa el formato de f-string :.2f para mostrar dos decimales.

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

message guarda el texto, mientras result recibe None. Use return para entregar un cálculo a otro código y deje que quien lo llama decida cuándo mostrarlo. Mostrar dos decimales no cambia la precisión del valor numérico original.

Escribir un archivo UTF-8 con file

Pase un objeto de archivo de texto escribible como file. Este ejemplo completo escribe y lee report.txt en una carpeta temporal, sin sobrescribir archivos existentes, y limpia después los datos. No necesita paquetes adicionales.

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" crea o vacía un archivo y "a" añade al final. Cada bloque with cierra su archivo. El último end="" evita añadir otro salto a los ya leídos. Revise rutas, permisos y modos y codificación de archivos antes de adaptarlo a un archivo real.

Capturar texto y entender TypeError

StringIO actúa como un archivo de texto en memoria. Pase file=output para reutilizar funciones de impresión y llame a getvalue() antes de cerrarlo. Una f-string resulta más directa si solo necesita construir una 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

El \n revelado por repr() es el salto capturado. sep y end deben ser cadenas o None para usar sus valores predeterminados; un número es inválido. BytesIO es un flujo binario y no acepta las escrituras de texto de print(). Codifique explícitamente y use una API binaria para datos binarios.

Mostrar progreso sin saltos con flush

La salida puede almacenarse en un búfer antes de entregarse. El progreso sin saltos y la salida a archivos o tuberías pueden aparecer más tarde de lo esperado. flush=True solicita al destino que vacíe su búfer.

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

Los caracteres finales son los mostrados, pero su actualización depende del terminal, IDE y destino. flush no añade una línea ni borra la pantalla, y tampoco garantiza almacenamiento persistente en disco. Mantenga los valores predeterminados y solicite el vaciado donde sean necesarias actualizaciones intermedias.