0Pricing
Python Academy · Lección

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.

  • namedtuple añ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.
  • _fields enumera los nombres y defaults establece 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

  1. La clase Enum
  2. IntEnum y Flag
  3. Conceptos básicos de NamedTuple
  4. typing.NamedTuple
← Volver a Python Academy