Conceptos básicos de NamedTuple
Cree registros inmutables y ligeros
Conceptos básicos de NamedTuple es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.
¿Qué es NamedTuple?
Una tupla con nombre es una tupla cuyas posiciones también tienen nombres. Ofrece la naturaleza ligera e inmutable de una tupla, junto con un acceso legible mediante atributos. Es perfecta para registros pequeños.
El problema de las tuplas simples
Las tuplas simples son posicionales, por lo que debe recordar qué significa cada índice. Es fácil equivocarse con código como p[0] y p[1].
point = (1, 2)
print(point[0]) # x?
print(point[1]) # y?Crear con namedtuple
La factory collections.namedtuple crea una nueva subclase de tupla. Pase el nombre del tipo y los nombres de los campos.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p)Acceder por nombre
Ahora puede leer los campos por nombre en lugar de por índice, lo que hace que el código se explique por sí mismo.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x)
print(p.y)Sigue siendo una tupla
Una tupla con nombre sigue siendo una tupla real, por lo que la indexación, el desempaquetado y la iteración funcionan como de costumbre.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p[0])
x, y = p
print(x, y)Inmutabilidad
Al igual que todas las tuplas, las tuplas con nombre son inmutables. Intentar asignar un campo genera AttributeError.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
try:
p.x = 99
except AttributeError as e:
print('Cannot modify:', e)Crear una copia modificada
Como no puede modificarla, utilice el método _replace() para producir una nueva instancia con algunos campos cambiados.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
q = p._replace(y=99)
print(p)
print(q)Convertir en un diccionario
El método _asdict() devuelve los campos como un diccionario, lo que resulta útil para la serialización o el registro.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p._asdict())Inspeccionar los campos
El atributo _fields enumera los nombres de los campos. Resulta práctico para código genérico que recorre los campos de un registro.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
print(Point._fields)Valores predeterminados
Proporcione valores predeterminados con el argumento defaults. Los valores predeterminados se aplican a los campos situados más a la derecha, igual que los valores predeterminados de los parámetros de una función.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y', 'z'], defaults=[0])
print(Point(1, 2))
print(Point(1, 2, 9))Devolver varios valores
Las tuplas con nombre son especialmente útiles como valores de retorno de funciones. En lugar de devolver una tupla anónima, devuelva una tupla con nombre para que quienes llamen a la función puedan leer los campos por nombre.
from collections import namedtuple
Stats = namedtuple('Stats', ['minimum', 'maximum'])
def analyze(nums):
return Stats(min(nums), max(nums))
r = analyze([3, 1, 9, 4])
print(r.minimum, r.maximum)Comprobación rápida
¿Cómo se crea una copia modificada de una instancia de tupla con nombre?
Resumen
Ha aprendido a crear registros inmutables y ligeros.
namedtupleañade nombres de campo a las tuplas.- Puede acceder a los campos por nombre o por índice; el desempaquetado sigue funcionando.
- Utilice
_replace()para crear copias modificadas y_asdict()para convertirlas. _fieldsenumera los nombres ydefaultsestablece los valores predeterminados.
Preguntas frecuentes
¿La lección «Conceptos básicos de NamedTuple» es gratis?
Sí — el texto completo de «Conceptos básicos de NamedTuple» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Conceptos básicos de NamedTuple»?
Cree registros inmutables y ligeros Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Python Academy?
No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Conceptos básicos de NamedTuple»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Python Academy?
Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- La clase Enum
- IntEnum y Flag
- Conceptos básicos de NamedTuple
- typing.NamedTuple