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ícatePrincipales 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}")
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
Reto herencia
Excepciones
Introducción a Python
Reto variables
Funciones Python
Reto funciones
Módulo datetime
Reto acumulación
Reto estructuras condicionales
Polimorfismo
Módulo os
Reto métodos dunder
Diccionarios
Reto clases y objetos
Reto operadores
Operadores
Estructuras de control
Funciones lambda
Reto diccionarios
Reto función lambda
Encapsulación
Reto coleciones
Reto funciones auxiliares
Crear módulos y paquetes
Módulo datetime
Excepciones
Operadores
Diccionarios
Reto map, filter
Reto tuplas
Proyecto gestor de tareas CRUD
Tuplas
Variables
Tipos de datos
Conjuntos
Reto mixins
Módulo csv
Módulo json
Herencia
Análisis de datos de ventas con Pandas
Reto fechas y tiempo
Reto estructuras de iteración
Funciones
Reto comprehensions
Variables
Reto serialización
Módulo csv
Reto polimorfismo
Polimorfismo
Clases y objetos
Reto encapsulación
Estructuras de control
Importar módulos y paquetes
Módulo math
Funciones lambda
Reto excepciones
Listas
Reto archivos
Encapsulación
Reto conjuntos
Clases y objetos
Instalación de Python y creación de proyecto
Reto listas
Tipos de datos
Crear módulos y paquetes
Tuplas
Herencia
Reto acceso a sistema
Proyecto sintaxis calculadora
Importar módulos y paquetes
Clases y objetos
Módulo os
Listas
Conjuntos
Reto tipos de datos
Reto matemáticas
Módulo json
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
Introducción
Instalación Y Creación De Proyecto
Introducción
Tema 2: Tipos De Datos, Variables Y Operadores
Introducción
Instalación De Python
Introducción
Tipos De Datos
Sintaxis
Variables
Sintaxis
Operadores
Sintaxis
Estructuras De Control
Sintaxis
Funciones
Sintaxis
Estructuras Control Iterativo
Sintaxis
Estructuras Control Condicional
Sintaxis
Testing Con Pytest
Sintaxis
Listas
Estructuras De Datos
Tuplas
Estructuras De Datos
Diccionarios
Estructuras De Datos
Conjuntos
Estructuras De Datos
Comprehensions
Estructuras De Datos
Clases Y Objetos
Programación Orientada A Objetos
Excepciones
Programación Orientada A Objetos
Encapsulación
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Mixins Y Herencia Múltiple
Programación Orientada A Objetos
Métodos Especiales (Dunder Methods)
Programación Orientada A Objetos
Composición De Clases
Programación Orientada A Objetos
Funciones Lambda
Programación Funcional
Aplicación Parcial
Programación Funcional
Entrada Y Salida, Manejo De Archivos
Programación Funcional
Decoradores
Programación Funcional
Generadores
Programación Funcional
Paradigma Funcional
Programación Funcional
Composición De Funciones
Programación Funcional
Funciones Orden Superior Map Y Filter
Programación Funcional
Funciones Auxiliares
Programación Funcional
Reducción Y Acumulación
Programación Funcional
Archivos Comprimidos
Entrada Y Salida Io
Entrada Y Salida Avanzada
Entrada Y Salida Io
Archivos Temporales
Entrada Y Salida Io
Contexto With
Entrada Y Salida Io
Módulo Csv
Biblioteca Estándar
Módulo Json
Biblioteca Estándar
Módulo Datetime
Biblioteca Estándar
Módulo Math
Biblioteca Estándar
Módulo Os
Biblioteca Estándar
Módulo Re
Biblioteca Estándar
Módulo Random
Biblioteca Estándar
Módulo Time
Biblioteca Estándar
Módulo Collections
Biblioteca Estándar
Módulo Sys
Biblioteca Estándar
Módulo Statistics
Biblioteca Estándar
Módulo Pickle
Biblioteca Estándar
Módulo Pathlib
Biblioteca Estándar
Importar Módulos Y Paquetes
Paquetes Y Módulos
Crear Módulos Y Paquetes
Paquetes Y Módulos
Entornos Virtuales (Virtualenv, Venv)
Entorno Y Dependencias
Gestión De Dependencias (Pip, Requirements.txt)
Entorno Y Dependencias
Python-dotenv Y Variables De Entorno
Entorno Y Dependencias
Acceso A Datos Con Mysql, Pymongo Y Pandas
Acceso A Bases De Datos
Acceso A Mongodb Con Pymongo
Acceso A Bases De Datos
Acceso A Mysql Con Mysql Connector
Acceso A Bases De Datos
Novedades Python 3.13
Características Modernas
Operador Walrus
Características Modernas
Pattern Matching
Características Modernas
Instalación Beautiful Soup
Web Scraping
Sintaxis General De Beautiful Soup
Web Scraping
Tipos De Selectores
Web Scraping
Web Scraping De Html
Web Scraping
Web Scraping Para Ciencia De Datos
Web Scraping
Autenticación Y Acceso A Recursos Protegidos
Web Scraping
Combinación De Selenium Con Beautiful Soup
Web Scraping
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.