Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende None y Datos Binarios | Interacciones entre Tipos
Tipos de Datos en Python

bookNone y Datos Binarios

Los programas reales gestionan valores ausentes y datos sin procesar provenientes de archivos o redes. Utilice None para representar "sin valor" y bytes o bytearray para datos binarios. Este capítulo muestra cuándo usar cada uno y cómo moverse de manera segura entre texto y bytes.

None para "Sin valor"

None es un único objeto especial que significa "nada aquí".

12345678910111213
# Basic checks result = None email = None print("result is None:", result is None) # True print("email is None:", email is None) # True # Identity checks are the reliable way if result is None: print("No result yet") if email is not None: print("Email present") else: print("Email missing")
copy

None es un valor falso, pero también lo son 0 y "". Prefiera is None cuando realmente signifique "ausente".

123
value = 0 print("not value:", not value) # True - but 0 is a valid value print("value is None:", value is None) # False - correctly distinguishes 0 from missing
copy

Valores predeterminados y alternativas

1234567891011
x = None safe_or = x or "unknown" # replaces any falsey value safe_none_only = "unknown" if x is None else x print("x=None, x or 'unknown':", safe_or) # 'unknown' print("x=None, None-only fallback:", safe_none_only) # 'unknown' x = 0 safe_or = x or "unknown" safe_none_only = "unknown" if x is None else x print("x=0, x or 'unknown':", safe_or) # 'unknown' - maybe not desired print("x=0, None-only fallback:", safe_none_only) # 0 - preserves valid zero
copy

Funciones y parámetros

12345678910111213
def find_user(name): # returns None if not found return None def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" user = find_user("Ada") print("user is None:", user is None) # True print(add_tag("hello")) # "[general] hello" print(add_tag("hello", tag="news")) # "[news] hello"
copy

bytes y bytearray para datos binarios

El texto utiliza str y almacena caracteres Unicode. Los datos binarios utilizan bytes o bytearray y almacenan valores de bytes sin procesar de 0 a 255.

123456789
# Creating binary data b1 = b"hello" # bytes literal b2 = bytes([72, 105]) # b"Hi" buf = bytearray(b"abc") # mutable buf[0] = 65 # now b"Abc" print("b1:", b1, type(b1)) # b'hello' <class 'bytes'> print("b2:", b2, type(b2)) # b'Hi' <class 'bytes'> print("buf:", buf, type(buf)) # bytearray(b'Abc') <class 'bytearray'>
copy

Conversión entre texto y bytes: codificar y decodificar

1234567
text = "café" data = text.encode("utf-8") # to bytes back = data.decode("utf-8") # back to str print("text:", text, type(text)) # café <class 'str'> print("data:", data, type(data)) # b'caf\xc3\xa9' <class 'bytes'> print("back:", back, type(back)) # café <class 'str'>
copy

Mezcla de texto y bytes: no válido sin conversión

123456789
# Non-valid operation with explicit error print try: bad = b"ID:" + "123" # bytes + str - not allowed except TypeError as e: print("TypeError when mixing bytes and str:", e) # Correct combination ok = b"ID:" + "123".encode("utf-8") print("combined bytes:", ok) # b'ID:123'
copy

Las longitudes pueden diferir

123
ch = "é" print("len('é') as str:", len(ch)) # 1 character print("len('é' encoded):", len(ch.encode("utf-8")))# 2 bytes
copy

Archivos

# Binary files yield bytes
# with open("example.png", "rb") as f:
#     blob = f.read()

1. ¿Qué comprobación detecta correctamente un valor ausente?

2. ¿Qué línea combina correctamente texto con un prefijo de bytes?

3. ¿Cuál afirmación es correcta?

question mark

¿Qué comprobación detecta correctamente un valor ausente?

Select the correct answer

question mark

¿Qué línea combina correctamente texto con un prefijo de bytes?

Select the correct answer

question mark

¿Cuál afirmación es correcta?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you explain when to use `None` versus other falsey values?

How do I safely provide default values for function parameters?

What are the main differences between `bytes` and `bytearray`?

Awesome!

Completion rate improved to 5

bookNone y Datos Binarios

Desliza para mostrar el menú

Los programas reales gestionan valores ausentes y datos sin procesar provenientes de archivos o redes. Utilice None para representar "sin valor" y bytes o bytearray para datos binarios. Este capítulo muestra cuándo usar cada uno y cómo moverse de manera segura entre texto y bytes.

None para "Sin valor"

None es un único objeto especial que significa "nada aquí".

12345678910111213
# Basic checks result = None email = None print("result is None:", result is None) # True print("email is None:", email is None) # True # Identity checks are the reliable way if result is None: print("No result yet") if email is not None: print("Email present") else: print("Email missing")
copy

None es un valor falso, pero también lo son 0 y "". Prefiera is None cuando realmente signifique "ausente".

123
value = 0 print("not value:", not value) # True - but 0 is a valid value print("value is None:", value is None) # False - correctly distinguishes 0 from missing
copy

Valores predeterminados y alternativas

1234567891011
x = None safe_or = x or "unknown" # replaces any falsey value safe_none_only = "unknown" if x is None else x print("x=None, x or 'unknown':", safe_or) # 'unknown' print("x=None, None-only fallback:", safe_none_only) # 'unknown' x = 0 safe_or = x or "unknown" safe_none_only = "unknown" if x is None else x print("x=0, x or 'unknown':", safe_or) # 'unknown' - maybe not desired print("x=0, None-only fallback:", safe_none_only) # 0 - preserves valid zero
copy

Funciones y parámetros

12345678910111213
def find_user(name): # returns None if not found return None def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" user = find_user("Ada") print("user is None:", user is None) # True print(add_tag("hello")) # "[general] hello" print(add_tag("hello", tag="news")) # "[news] hello"
copy

bytes y bytearray para datos binarios

El texto utiliza str y almacena caracteres Unicode. Los datos binarios utilizan bytes o bytearray y almacenan valores de bytes sin procesar de 0 a 255.

123456789
# Creating binary data b1 = b"hello" # bytes literal b2 = bytes([72, 105]) # b"Hi" buf = bytearray(b"abc") # mutable buf[0] = 65 # now b"Abc" print("b1:", b1, type(b1)) # b'hello' <class 'bytes'> print("b2:", b2, type(b2)) # b'Hi' <class 'bytes'> print("buf:", buf, type(buf)) # bytearray(b'Abc') <class 'bytearray'>
copy

Conversión entre texto y bytes: codificar y decodificar

1234567
text = "café" data = text.encode("utf-8") # to bytes back = data.decode("utf-8") # back to str print("text:", text, type(text)) # café <class 'str'> print("data:", data, type(data)) # b'caf\xc3\xa9' <class 'bytes'> print("back:", back, type(back)) # café <class 'str'>
copy

Mezcla de texto y bytes: no válido sin conversión

123456789
# Non-valid operation with explicit error print try: bad = b"ID:" + "123" # bytes + str - not allowed except TypeError as e: print("TypeError when mixing bytes and str:", e) # Correct combination ok = b"ID:" + "123".encode("utf-8") print("combined bytes:", ok) # b'ID:123'
copy

Las longitudes pueden diferir

123
ch = "é" print("len('é') as str:", len(ch)) # 1 character print("len('é' encoded):", len(ch.encode("utf-8")))# 2 bytes
copy

Archivos

# Binary files yield bytes
# with open("example.png", "rb") as f:
#     blob = f.read()

1. ¿Qué comprobación detecta correctamente un valor ausente?

2. ¿Qué línea combina correctamente texto con un prefijo de bytes?

3. ¿Cuál afirmación es correcta?

question mark

¿Qué comprobación detecta correctamente un valor ausente?

Select the correct answer

question mark

¿Qué línea combina correctamente texto con un prefijo de bytes?

Select the correct answer

question mark

¿Cuál afirmación es correcta?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3
some-alt