Alcance y mutabilidad
Qué es el alcance
El alcance de una variable es la región del programa donde ese nombre existe y puede usarse. En Python, cada función abre un espacio local; lo declarado dentro solo vive ahí salvo que se declare de otro modo.
Las cuatro regiones de búsqueda
- Local: el interior de la función en ejecución.
- Encerrante: funciones que contienen a otras.
- Global y incorporado: el módulo y los nombres built-in.
Variables locales y globales
Asignar un nombre dentro de una función lo crea local: fuera no existe y no toca una variable global del mismo nombre. Leer una variable no asignada localmente la buscará hacia fuera, lo que confunde a quien espera una asignación.
Modificar lo global
- Para cambiar una variable global desde una función hace falta declararlo explícitamente.
- Sin esa declaración, una asignación crea una variable local nueva.
- Depender de lo global enlentece y complica el rastreo de errores.
Referencias, no cajas
Una variable en Python no guarda un valor dentro de una caja: es una etiqueta pegada a un objeto. Asignar otro nombre no copia el objeto: pega una segunda etiqueta al mismo sitio.
Objetos mutables e inmutables
- Inmutables (número, cadena, tupla): el objeto no cambia; reasignar crea uno nuevo.
- Mutables (lista, diccionario, conjunto): se alteran en sitio, y todas las etiquetas ven el cambio.
- La identidad del objeto cuenta, no solo su valor.
El alias que traiciona
Copiar una lista asignándola a otra variable no la copia: alias. Modificar una se refleja en la otra. La copia real exige crear un objeto nuevo, y esa distinción es una de las causas más tenaces de errores.
Mutabilidad y funciones
- Pasar una lista a una función y modificarla afecta al original del llamante.
- Un argumento por defecto mutable se comparte entre todas las llamadas: trampa clásica.
- Devolver un objeto nuevo suele ser más seguro que alterar el recibido.
Cómo evitar sorpresas
- Prefiere funciones que no dependan de variables globales.
- Copia explícitamente cuando no quieras compartir el objeto.
- Evita mutar argumentos: devuelve transformaciones nuevas.

Identidad frente a igualdad
Dos listas pueden ser iguales en contenido sin ser el mismo objeto. Igualdad mira valores, identidad mira si apuntan al mismo sitio; confundirlas lleva a razonar mal sobre si una copia es realmente independiente.
Alcance en el mundo real
En un proyecto, variables mal colocadas generan efectos remotos: una función que reescribe una lista global ennegrece resultados más arriba del flujo. Mantener el estado cerca de quien lo usa hace el sistema predecible.
Errores frecuentes
- Asignar dentro de una función creyendo que modificas el global, cuando en realidad creas un local.
- Copiar una lista con un simple igual y obtener un alias que cambia a la vez.
- Poner una lista vacía como valor por defecto y verla acumular entre llamadas.
Ejemplo resuelto: la trampa del argumento mutable
Una función recibe una lista, la modifica y el llamante observa que su lista original cambió. Se razona con etiquetas y objetos.
- Recordar que el parámetro no es una caja nueva: es una etiqueta pegada al mismo objeto.
- Al mutar la lista dentro (por ejemplo con append) se altera el objeto compartido.
- Para no tocar el original, crear dentro una copia explícita antes de modificar.
- O mejor aún, devolver una transformación nueva en lugar de mutar la entrada.
- Reservar la mutación en sitio para cuando compartir el objeto sea la intención.
¿Para qué sirve en la realidad?
Buena parte de los bugs silenciosos en análisis de datos vienen de alias no deseados: entender referencias y alcance evita que una transformación corrompa el dataset original del que dependen otros pasos.
Si dentro de una función asignas valor a un nombre que no declaraste local ni global, ese nombre:
Asignar una lista a otra variable crea una copia independiente de sus elementos.
Scope y mutación
Toca una tarjeta para ver la respuesta.
Clasifica cada objeto por si es mutable o inmutable.
Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.
Alcance (informática)Contexto donde una asociación de nombre es válida.
Une cada noción con su definición:
Dónde vive y a qué apunta
- Alcance y mutabilidad
- Alcance
- local, encerrante, global, incorporado
- local, encerrante, global, incorporado
- asignar crea local
- Alcance
- etiquetas, no cajas
- inmutables no cambian
ReferenciaVínculo que asocia un nombre con un objeto en memoria.
Una función tiene por defecto una lista vacía para ir acumulando resultados, y notas que la lista llega llena a la segunda llamada aunque sea nueva. Explica la causa apelando a la mutabilidad y al alcance.
Tu texto se guarda sólo en este dispositivo.
Comentarios
Inicia sesión para comentar.
Todavía no hay comentarios. Sé la primera persona en opinar.