None y Datos Binarios
Los programas reales gestionan valores ausentes y datos binarios. Utilice None para indicar "sin valor" y bytes/bytearray para contenido binario en bruto. Comprenda 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")
Utilice is None en lugar de comprobaciones de veracidad, ya que 0 y "" también se consideran 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' (maybe wrong) 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
bytes y bytearray para Datos Binarios
str almacena texto, bytes y bytearray almacenan valores de bytes en bruto.
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. Utilizar 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 se debe 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 solo 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
Can you explain more about when to use None versus other default values?
How do I safely convert between text and bytes in Python?
What are some common mistakes when handling binary data and missing values?
Genial!
Completion tasa mejorada a 3.45
None y Datos Binarios
Desliza para mostrar el menú
Los programas reales gestionan valores ausentes y datos binarios. Utilice None para indicar "sin valor" y bytes/bytearray para contenido binario en bruto. Comprenda 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")
Utilice is None en lugar de comprobaciones de veracidad, ya que 0 y "" también se consideran 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' (maybe wrong) 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
bytes y bytearray para Datos Binarios
str almacena texto, bytes y bytearray almacenan valores de bytes en bruto.
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. Utilizar 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 se debe 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 solo 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!