Python

Python

Tutorial Python: Novedades Python 3.13

Descubre las novedades de Python 3.13 con mejoras en rendimiento, tipado, seguridad y nuevas funcionalidades para programadores avanzados.

Aprende Python y certifícate

Principales características nuevas de Python 3.13

Python 3.13 introduce mejoras significativas en rendimiento, sintaxis y funcionalidades que optimizan el desarrollo y la ejecución de aplicaciones. Esta versión continúa la evolución del lenguaje con características que facilitan la escritura de código más limpio y eficiente.

Mejoras en el sistema de tipos

Python 3.13 refuerza su sistema de tipado gradual con nuevas características que mejoran la verificación estática de tipos sin sacrificar la flexibilidad dinámica del lenguaje.

Tipos genéricos autónomos

Ahora es posible definir tipos genéricos sin necesidad de heredar de typing.Generic, lo que simplifica la creación de anotaciones de tipo:

from typing import TypeVar

T = TypeVar('T')

# Nuevo en Python 3.13: tipo genérico autónomo
class Box[T]:  # Sin necesidad de heredar de Generic[T]
    def __init__(self, value: T) -> None:
        self.value = value
        
    def get(self) -> T:
        return self.value

# Uso
int_box = Box[int](42)
str_box = Box[str]("Hello")

Mejoras en TypedDict

Se ha mejorado el soporte para TypedDict con la posibilidad de definir campos opcionales de manera más intuitiva:

from typing import TypedDict, NotRequired

# Nuevo en Python 3.13: sintaxis mejorada para campos opcionales
class UserProfile(TypedDict):
    name: str
    age: int
    email: NotRequired[str]  # Campo opcional
    address: NotRequired[str]  # Campo opcional

# Un diccionario válido sin los campos opcionales
user: UserProfile = {"name": "Ana", "age": 28}

Optimizaciones de rendimiento

Nuevo intérprete más rápido

Python 3.13 incluye mejoras significativas en el intérprete que reducen el tiempo de ejecución de código:

# Las operaciones con cadenas son hasta un 30% más rápidas
def concatenar_cadenas(n: int) -> str:
    resultado = ""
    for i in range(n):
        resultado += str(i)
    return resultado

# Las operaciones con diccionarios también se han optimizado
def operaciones_diccionario(n: int) -> dict:
    d = {}
    for i in range(n):
        d[f"clave_{i}"] = i * 2
    return d

Mejoras en la gestión de memoria

Se ha optimizado el recolector de basura para reducir las pausas y mejorar la eficiencia en la gestión de memoria:

# Código que crea y destruye muchos objetos
# se beneficia de las mejoras en el recolector de basura
def crear_objetos_temporales(n: int) -> None:
    for _ in range(n):
        # Estos objetos se liberan más eficientemente en Python 3.13
        [list(range(100)) for _ in range(1000)]

Nuevas características del lenguaje

Operador de unión de patrones

Python 3.13 introduce el operador | para unir patrones en las estructuras match/case, permitiendo una sintaxis más concisa:

def analizar_valor(valor):
    match valor:
        # Nuevo en Python 3.13: unión de patrones con |
        case int() | float() as num if num > 0:
            return f"Número positivo: {num}"
        case str() | bytes() as texto:
            return f"Texto de longitud {len(texto)}"
        case _:
            return "Otro tipo de valor"

print(analizar_valor(42))       # "Número positivo: 42"
print(analizar_valor("Python")) # "Texto de longitud 6"

Mejoras en f-strings

Las f-strings ahora permiten expresiones más complejas y anidamiento de llaves de manera más intuitiva:

nombre = "Python"
version = 3.13

# Nuevo en Python 3.13: sintaxis mejorada para f-strings
mensaje = f"Bienvenido a {nombre} {version}"
print(mensaje)  # "Bienvenido a Python 3.13"

# Anidamiento de llaves más intuitivo
datos = {"lenguaje": "Python", "versión": 3.13}
print(f"Usando {datos['lenguaje']} {datos['versión']}")  # "Usando Python 3.13"

Mejoras en la biblioteca estándar

Nuevo módulo asyncio.taskgroup

Python 3.13 introduce un nuevo módulo para gestionar grupos de tareas asíncronas de manera más eficiente:

import asyncio
from asyncio.taskgroup import TaskGroup

async def tarea(nombre: str, segundos: float) -> str:
    await asyncio.sleep(segundos)
    return f"Tarea {nombre} completada"

async def main():
    # Nuevo en Python 3.13: TaskGroup para gestionar tareas relacionadas
    async with TaskGroup() as tg:
        # Crear varias tareas que se ejecutan concurrentemente
        tarea1 = tg.create_task(tarea("A", 1.0))
        tarea2 = tg.create_task(tarea("B", 0.5))
        tarea3 = tg.create_task(tarea("C", 1.5))
    
    # Todas las tareas están completadas cuando salimos del bloque with
    resultados = [tarea1.result(), tarea2.result(), tarea3.result()]
    print(resultados)

asyncio.run(main())

Mejoras en el módulo pathlib

El módulo pathlib ha sido mejorado con nuevos métodos para operaciones comunes con archivos:

from pathlib import Path

# Nuevo en Python 3.13: método walk() para recorrer directorios
def listar_archivos_python(directorio: str) -> list[str]:
    ruta = Path(directorio)
    archivos_python = []
    
    # Método walk() similar a os.walk pero con la API de Path
    for ruta_actual, directorios, archivos in ruta.walk():
        for archivo in archivos:
            if archivo.suffix == '.py':
                archivos_python.append(str(ruta_actual / archivo))
                
    return archivos_python

# Nuevo método copy() para copiar archivos
def copiar_archivo(origen: str, destino: str) -> None:
    Path(origen).copy(Path(destino))

Mejoras en la seguridad

Validación mejorada de entradas

Python 3.13 incluye mejoras en la validación de entradas para prevenir vulnerabilidades:

import json
from json.decoder import JSONDecodeError

def procesar_json_seguro(entrada: str) -> dict:
    try:
        # Validación mejorada en Python 3.13
        datos = json.loads(entrada, parse_constant=lambda x: None)
        return datos
    except JSONDecodeError:
        return {"error": "Formato JSON inválido"}
    except Exception as e:
        return {"error": f"Error inesperado: {str(e)}"}

Mejoras en el módulo ssl

El módulo ssl ha sido actualizado para soportar los protocolos de seguridad más recientes:

import ssl
import socket

def crear_conexion_segura(host: str, puerto: int) -> socket.socket:
    # Configuración de contexto SSL con opciones de seguridad mejoradas
    contexto = ssl.create_default_context()
    
    # Nuevas opciones de seguridad en Python 3.13
    contexto.minimum_version = ssl.TLSVersion.TLSv1_3
    contexto.set_ciphers('HIGH:!aNULL:!eNULL:!MD5:!3DES')
    
    # Crear socket y envolver con SSL
    sock = socket.create_connection((host, puerto))
    return contexto.wrap_socket(sock, server_hostname=host)

Mejoras en el manejo de excepciones

Python 3.13 introduce mejoras en el manejo de excepciones para facilitar la depuración y el mantenimiento del código:

# Nuevo en Python 3.13: notas en excepciones
def dividir(a: int, b: int) -> float:
    try:
        return a / b
    except ZeroDivisionError as e:
        # Añadir información contextual a la excepción
        e.add_note(f"Intento de división por cero: {a} / {b}")
        raise

# Captura de excepciones con información adicional
try:
    resultado = dividir(10, 0)
except ZeroDivisionError as e:
    print(f"Error: {e}")
    # Acceder a las notas de la excepción
    for nota in e.__notes__:
        print(f"Nota: {nota}")

Mejoras en la compatibilidad con otras tecnologías

Python 3.13 mejora la interoperabilidad con otras tecnologías y sistemas:

# Mejor soporte para integración con C/C++
from ctypes import cdll, c_int, c_double

# Cargar biblioteca compartida
lib = cdll.LoadLibrary("./libejemplo.so")

# Definir tipos de argumentos y retorno
lib.calcular.argtypes = [c_int, c_double]
lib.calcular.restype = c_double

# Llamar a función C desde Python
resultado = lib.calcular(42, 3.14)
print(f"Resultado de la función C: {resultado}")

CONSTRUYE TU CARRERA EN IA Y PROGRAMACIÓN SOFTWARE

Accede a +1000 lecciones y cursos con certificado. Mejora tu portfolio con certificados de superación para tu CV.

30 % DE DESCUENTO

Plan mensual

19.00 /mes

13.30 € /mes

Precio normal mensual: 19 €
63 % DE DESCUENTO

Plan anual

10.00 /mes

7.00 € /mes

Ahorras 144 € al año
Precio normal anual: 120 €
Aprende Python online

Ejercicios de esta lección Novedades Python 3.13

Evalúa tus conocimientos de esta lección Novedades Python 3.13 con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Módulo math

Python
Puzzle

Reto herencia

Python
Código

Excepciones

Python
Test

Introducción a Python

Python
Test

Reto variables

Python
Código

Funciones Python

Python
Puzzle

Reto funciones

Python
Código

Módulo datetime

Python
Test

Reto acumulación

Python
Código

Reto estructuras condicionales

Python
Código

Polimorfismo

Python
Test

Módulo os

Python
Test

Reto métodos dunder

Python
Código

Diccionarios

Python
Puzzle

Reto clases y objetos

Python
Código

Reto operadores

Python
Código

Operadores

Python
Test

Estructuras de control

Python
Puzzle

Funciones lambda

Python
Test

Reto diccionarios

Python
Código

Reto función lambda

Python
Código

Encapsulación

Python
Puzzle

Reto coleciones

Python
Proyecto

Reto funciones auxiliares

Python
Código

Crear módulos y paquetes

Python
Puzzle

Módulo datetime

Python
Puzzle

Excepciones

Python
Puzzle

Operadores

Python
Puzzle

Diccionarios

Python
Test

Reto map, filter

Python
Código

Reto tuplas

Python
Código

Proyecto gestor de tareas CRUD

Python
Proyecto

Tuplas

Python
Puzzle

Variables

Python
Puzzle

Tipos de datos

Python
Puzzle

Conjuntos

Python
Test

Reto mixins

Python
Código

Módulo csv

Python
Test

Módulo json

Python
Test

Herencia

Python
Test

Análisis de datos de ventas con Pandas

Python
Proyecto

Reto fechas y tiempo

Python
Proyecto

Reto estructuras de iteración

Python
Código

Funciones

Python
Test

Reto comprehensions

Python
Código

Variables

Python
Test

Reto serialización

Python
Proyecto

Módulo csv

Python
Puzzle

Reto polimorfismo

Python
Código

Polimorfismo

Python
Puzzle

Clases y objetos

Python
Código

Reto encapsulación

Python
Código

Estructuras de control

Python
Test

Importar módulos y paquetes

Python
Test

Módulo math

Python
Test

Funciones lambda

Python
Puzzle

Reto excepciones

Python
Código

Listas

Python
Puzzle

Reto archivos

Python
Proyecto

Encapsulación

Python
Test

Reto conjuntos

Python
Código

Clases y objetos

Python
Test

Instalación de Python y creación de proyecto

Python
Test

Reto listas

Python
Código

Tipos de datos

Python
Test

Crear módulos y paquetes

Python
Test

Tuplas

Python
Test

Herencia

Python
Puzzle

Reto acceso a sistema

Python
Proyecto

Proyecto sintaxis calculadora

Python
Proyecto

Importar módulos y paquetes

Python
Puzzle

Clases y objetos

Python
Puzzle

Módulo os

Python
Puzzle

Listas

Python
Test

Conjuntos

Python
Puzzle

Reto tipos de datos

Python
Código

Reto matemáticas

Python
Proyecto

Módulo json

Python
Puzzle

Todas las lecciones de Python

Accede a todas las lecciones de Python y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción A Python

Python

Introducción

Instalación Y Creación De Proyecto

Python

Introducción

Tema 2: Tipos De Datos, Variables Y Operadores

Python

Introducción

Instalación De Python

Python

Introducción

Tipos De Datos

Python

Sintaxis

Variables

Python

Sintaxis

Operadores

Python

Sintaxis

Estructuras De Control

Python

Sintaxis

Funciones

Python

Sintaxis

Estructuras Control Iterativo

Python

Sintaxis

Estructuras Control Condicional

Python

Sintaxis

Testing Con Pytest

Python

Sintaxis

Listas

Python

Estructuras De Datos

Tuplas

Python

Estructuras De Datos

Diccionarios

Python

Estructuras De Datos

Conjuntos

Python

Estructuras De Datos

Comprehensions

Python

Estructuras De Datos

Clases Y Objetos

Python

Programación Orientada A Objetos

Excepciones

Python

Programación Orientada A Objetos

Encapsulación

Python

Programación Orientada A Objetos

Herencia

Python

Programación Orientada A Objetos

Polimorfismo

Python

Programación Orientada A Objetos

Mixins Y Herencia Múltiple

Python

Programación Orientada A Objetos

Métodos Especiales (Dunder Methods)

Python

Programación Orientada A Objetos

Composición De Clases

Python

Programación Orientada A Objetos

Funciones Lambda

Python

Programación Funcional

Aplicación Parcial

Python

Programación Funcional

Entrada Y Salida, Manejo De Archivos

Python

Programación Funcional

Decoradores

Python

Programación Funcional

Generadores

Python

Programación Funcional

Paradigma Funcional

Python

Programación Funcional

Composición De Funciones

Python

Programación Funcional

Funciones Orden Superior Map Y Filter

Python

Programación Funcional

Funciones Auxiliares

Python

Programación Funcional

Reducción Y Acumulación

Python

Programación Funcional

Archivos Comprimidos

Python

Entrada Y Salida Io

Entrada Y Salida Avanzada

Python

Entrada Y Salida Io

Archivos Temporales

Python

Entrada Y Salida Io

Contexto With

Python

Entrada Y Salida Io

Módulo Csv

Python

Biblioteca Estándar

Módulo Json

Python

Biblioteca Estándar

Módulo Datetime

Python

Biblioteca Estándar

Módulo Math

Python

Biblioteca Estándar

Módulo Os

Python

Biblioteca Estándar

Módulo Re

Python

Biblioteca Estándar

Módulo Random

Python

Biblioteca Estándar

Módulo Time

Python

Biblioteca Estándar

Módulo Collections

Python

Biblioteca Estándar

Módulo Sys

Python

Biblioteca Estándar

Módulo Statistics

Python

Biblioteca Estándar

Módulo Pickle

Python

Biblioteca Estándar

Módulo Pathlib

Python

Biblioteca Estándar

Importar Módulos Y Paquetes

Python

Paquetes Y Módulos

Crear Módulos Y Paquetes

Python

Paquetes Y Módulos

Entornos Virtuales (Virtualenv, Venv)

Python

Entorno Y Dependencias

Gestión De Dependencias (Pip, Requirements.txt)

Python

Entorno Y Dependencias

Python-dotenv Y Variables De Entorno

Python

Entorno Y Dependencias

Acceso A Datos Con Mysql, Pymongo Y Pandas

Python

Acceso A Bases De Datos

Acceso A Mongodb Con Pymongo

Python

Acceso A Bases De Datos

Acceso A Mysql Con Mysql Connector

Python

Acceso A Bases De Datos

Novedades Python 3.13

Python

Características Modernas

Operador Walrus

Python

Características Modernas

Pattern Matching

Python

Características Modernas

Instalación Beautiful Soup

Python

Web Scraping

Sintaxis General De Beautiful Soup

Python

Web Scraping

Tipos De Selectores

Python

Web Scraping

Web Scraping De Html

Python

Web Scraping

Web Scraping Para Ciencia De Datos

Python

Web Scraping

Autenticación Y Acceso A Recursos Protegidos

Python

Web Scraping

Combinación De Selenium Con Beautiful Soup

Python

Web Scraping

Accede GRATIS a Python y certifícate

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender las mejoras en el sistema de tipos, como tipos genéricos autónomos y mejoras en TypedDict.
  • Conocer las optimizaciones de rendimiento en el intérprete y la gestión de memoria.
  • Aprender las nuevas características del lenguaje, como el operador de unión de patrones y mejoras en f-strings.
  • Familiarizarse con las actualizaciones en la biblioteca estándar, incluyendo asyncio.taskgroup y pathlib.
  • Entender las mejoras en seguridad, manejo de excepciones y compatibilidad con otras tecnologías.