`global` y `nonlocal`: modificar variables fuera del scope local
Cómo y cuándo usar `global` y `nonlocal` para escribir en scopes externos, sus casos legítimos y por qué el abuso de `global` es señal de mal diseño.
Cómo y cuándo usar `global` y `nonlocal` para escribir en scopes externos, sus casos legítimos y por qué el abuso de `global` es señal de mal diseño.
Cómo Python resuelve nombres siguiendo el orden Local→Enclosing→Global→Built-in, cuándo usar nonlocal vs global y por qué los closures en bucles se comportan de forma inesperada.
Cómo anotar funciones en Python, qué hace el intérprete con las anotaciones y cuándo los type hints aportan valor real frente a ruido.
Cómo usar / y * en firmas Python para controlar si un parámetro se pasa por posición, por nombre, o ambos, y cuándo eso protege tu API.
Captura y reenvío de argumentos posicionales y keyword con `*args` y `**kwargs`; orden de firma, desempaquetado en llamadas y uso correcto en wrappers.
Por qué `def f(items=[])` comparte la misma lista entre llamadas, cómo el modelo de objetos de Python lo explica, y el patrón correcto con `None` como sentinel.
Diferencia entre pasar valores por posición o por nombre, la regla de mezcla y cuándo los keyword arguments hacen tu código más seguro y legible.
Cómo def crea objetos función, cómo return controla el valor devuelto y por qué las funciones son valores como cualquier otro en Python.
Cómo `break` y `continue` controlan el flujo dentro de bucles, y por qué la cláusula `else` elimina la necesidad de variables bandera en patrones de búsqueda.
Cuándo y cómo usar `while` en Python: condición directa, `while True` con `break`, backoff exponencial y máquinas de estados simples.