None y Datos Binarios
Desliza para mostrar el menú
Los programas reales gestionan valores ausentes y datos binarios. Utilizar None para indicar "sin valor" y bytes/bytearray para contenido binario en bruto. Conocer cuándo es apropiado cada uno y cómo convertir de manera segura entre texto y bytes.
None para "Sin valor"
None es un único objeto que significa "nada aquí".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Utilizar is None en lugar de comprobaciones de veracidad, ya que 0 y "" también son valores falsos.
123value = 0 print(not value) # True print(value is None) # False
Valores predeterminados y alternativas
None se utiliza como un marcador claro de que un valor falta intencionadamente. Permite distinguir entre "no se proporcionó valor" y valores válidos como 0 o "", haciendo que los valores predeterminados y las alternativas sean más seguros y predecibles.
1234567x = None print(x or "unknown") # 'unknown' print("unknown" if x is None else x) x = 0 print(x or "unknown") # 'unknown' print("unknown" if x is None else x) # 0
Funciones y parámetros
Este ejemplo muestra cómo una función utiliza un parámetro establecido en None como señal de que no se proporcionó ninguna etiqueta. Esto permite que la función asigne un valor predeterminado seguro, mientras que el usuario aún puede sobrescribirlo si es necesario.
1234567def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" print(add_tag("hello")) # [general] hello print(add_tag("hello", "news")) # [news] hello
Datos binarios
str almacena texto, bytes y bytearray almacenan valores de bytes sin procesar.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Codificación y decodificación
La codificación convierte texto en bytes para que pueda almacenarse o transferirse de manera confiable, mientras que la decodificación restaura esos bytes a texto legible. El uso de una codificación definida como UTF-8 garantiza que los caracteres se conserven correctamente.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Mezcla de texto y bytes
El texto (str) y los bytes (bytes) no pueden combinarse directamente porque representan tipos de datos diferentes. Para mezclarlos de forma segura, primero debes convertir el texto en bytes utilizando una codificación explícita.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Diferencias de longitud
Algunos caracteres ocupan un elemento de texto pero varios bytes, por lo que su longitud en str y en la forma codificada puede diferir. Esto ocurre porque codificaciones como UTF-8 pueden usar más de un byte para representar un solo carácter.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Archivos
Los archivos binarios deben abrirse en modo "rb" para que sus bytes sin procesar se lean exactamente como están almacenados. Esto evita que Python intente interpretar los datos como texto.
# with open("example.png", "rb") as f:
# blob = f.read()
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla