Pregunta 1¿Qué bucle es el mejor cuando el final está determinado por una cantidad fija de elementos?
Resumen de la sintaxis de Python — Elegir entre control de flujo y funciones
Un repaso de la sintaxis de Python (control de flujo y funciones). Conecta de forma transversal las ramificaciones condicionales, los bucles, el manejo de excepciones y las aplicaciones de funciones en un mapa claro.
La sintaxis de Python es el conjunto de herramientas para conectar el comportamiento
En Fundamentos de Python aprendiste los tipos que contienen tus datos: int / str / list / dict. La serie de Sintaxis de Python es la siguiente capa: el conjunto de herramientas para hacer fluir el comportamiento sobre esos datos.
Todo lo de esta serie se puede agrupar en cuatro tareas: ramificar según condiciones, repetir trabajo, capturar fallos y agrupar lógica para reutilizarla.
Control de flujo — Ramificación, bucles y excepciones
Tres familias para tener a mano: la familia if para seleccionar comportamiento, la familia de bucles para recorrer elementos y la familia de excepciones para sobrevivir a fallos.
| Categoría | Sintaxis / Función | Uso típico |
|---|---|---|
| Ramificación | if / elif / else | Elegir una rama según un valor o estado |
| Ramificación | all() / any() | Comprobar en bloque si todos o algunos elementos cumplen una condición |
| Bucles | for + range / enumerate / zip | Recorrer una colección elemento por elemento |
| Bucles | while | Repetir mientras se cumpla una condición (cuidado con los bucles infinitos) |
| Bucles | Comprensiones de listas | Combinar for + filtro + transformación en una sola línea |
| Expresión de asignación | Operador morsa := | Asignar y comprobar en una línea (reduce duplicación en while / if) |
| Excepciones | try / except / finally | Capturar errores en tiempo de ejecución y limpiar |
| Lanzar | raise / clases de excepción personalizadas | Lanzar tú mismo una excepción cuando se rompen las suposiciones |
Funciones — El conjunto de herramientas para reutilizar
Definir una función con def es sencillo, pero las funciones de Python también traen un conjunto de herramientas avanzadas —pasar funciones como valores, definir funciones dentro de funciones y decorarlas— que es lo que hace que el código Python sea reutilizable y mantenible.
def en el centro, el conjunto de herramientas se ramifica en cuatro direcciones: argumentos flexibles (args/kwargs), manipulación del scope (closures, nonlocal), evaluación perezosa (generadores) y decoración (de orden superior, decoradores, lambda, map).| Categoría | Sintaxis / Función | Uso típico |
|---|---|---|
| Definición | def / return | Dar un nombre a un fragmento de lógica para poder reutilizarlo |
| Argumentos | *args / **kwargs y múltiples retornos | Aceptar cualquier cantidad de argumentos / desempaquetar en el sitio de llamada |
| Cuidado | Trampa del argumento mutable | Los args list / dict se comparten con quien llama. Usa None como valor predeterminado |
| Scope | Funciones internas y closures — global / nonlocal | Construir una función que recuerde (o reescriba) valores externos |
| Eval. perezosa | Funciones generadoras yield | Producir una secuencia enorme un elemento a la vez, ahorrando memoria |
| Funciones como valores | Funciones de orden superior | Tomar o devolver funciones como argumentos / valores de retorno |
| Funciones como valores | Expresiones lambda | Funciones anónimas de una línea |
| Funciones como valores | map() | Aplicar una función a cada elemento de una lista de una vez |
| Decoración | Decoradores @ | Añadir logging, medición de tiempos o caching a funciones existentes |
Lo que viene — Agrupar datos y comportamiento con class
A continuación, Programación orientada a objetos en Python te muestra cómo usar class para agrupar datos (atributos) y comportamiento (métodos) en un único objeto: eso es la programación orientada a objetos.
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 2¿Cuál es la forma más concisa de comprobar si todos los elementos de nums son positivos?
Pregunta 3¿Cuál encaja mejor para añadir lógica común como logging o medición de tiempos a funciones existentes?