¿Qué son los ámbitos en Python y cómo funcionan?

| Última modificación: 15 de marzo de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Los ámbitos en Python son un concepto fundamental que todo programador debe entender para escribir código eficiente y sin errores. Los ámbitos determinan dónde una variable es accesible y cuál es su valor en un momento dado. En este artículo, exploraremos en detalle cómo funcionan los ámbitos en Python, incluyendo el ámbito global y el ámbito local, y cómo se manejan en el contexto de la herencia y las clases base. Además, discutiremos las variables locales, las variables de clase y las expresiones generadoras en relación con los ámbitos en Python.

Ámbitos en Python

Ámbito global

El ámbito global en Python se refiere al alcance más amplio en el que se pueden declarar variables y funciones. Las variables globales son accesibles desde cualquier parte del código, ya sea dentro de una función o fuera de ella. Para declarar una variable global, simplemente se asigna un valor a un nombre fuera de cualquier función o método.

variable_global = 10

En este ejemplo, variable_global es una variable global y se puede acceder a ella en cualquier lugar del programa.

Ámbito local

El ámbito local se refiere al alcance más estrecho y específico en el que se pueden declarar variables. Las variables locales son accesibles solo dentro de la función o método en el que se han declarado. Si intentas acceder a una variable local desde fuera de su función, obtendrás un error.

def mi_funcion(): variable_local = 5 print(variable_local) mi_funcion() # Esto imprimirá 5 print(variable_local) # Esto generará un error

En este ejemplo, variable_local solo es accesible dentro de la función mi_funcion.

Variables locales con el mismo nombre

Puede haber variables locales con el mismo nombre en funciones diferentes sin causar conflictos. Cada función tiene su propio ámbito local, por lo que las variables con el mismo nombre en diferentes funciones son independientes entre sí.

def funcion1(): x = 10 def funcion2(): x = 20

En este caso, x es una variable local en ambas funciones, pero son dos variables diferentes con el mismo nombre.

Herencia múltiple y clases base

En el contexto de la programación orientada a objetos (POO), la herencia múltiple se refiere a la capacidad de una clase derivada de heredar atributos y métodos de varias clases base. Esto plantea preguntas sobre cómo se manejan los ámbitos en Python cuando hay nombres de variables y métodos que se superponen entre clases base y clases derivadas.

Cuando una clase derivada tiene métodos o variables con el mismo nombre que una de las clases base, Python sigue una regla de resolución de ámbitos llamada MRO (Method Resolution Order). La MRO determina el orden en el que Python busca los atributos y métodos en las clases base.

class ClaseBase1: x = 10 class ClaseBase2: x = 20 class ClaseDerivada(ClaseBase1, ClaseBase2): pass objeto = ClaseDerivada() print(objeto.x) # Esto imprimirá 10, ya que se toma de la primera clase base

En este ejemplo, ClaseDerivada hereda de dos clases base, ambas con una variable x. La MRO asegura que se tome el valor de x de la primera clase base, en este caso, ClaseBase1.

Variables de clase

Las variables de clase son variables que pertenecen a la clase en lugar de una instancia específica de la clase. Estas variables son accesibles por todas las instancias de la clase y se definen fuera de cualquier método de la clase. A menudo se utilizan para almacenar información compartida entre todas las instancias de la clase.

class MiClase: variable_de_clase = 42 def __init__(self, valor): self.valor = valor objeto1 = MiClase(10) objeto2 = MiClase(20) print(objeto1.variable_de_clase) # Esto imprimirá 42 print(objeto2.variable_de_clase) # Esto también imprimirá 42

En este ejemplo, variable_de_clase es una variable de clase que es accesible desde todas las instancias de MiClase.

Expresiones generadoras

Las expresiones generadoras son una característica poderosa de Python que permite crear secuencias de valores de manera eficiente. Estas expresiones se utilizan principalmente para crear iteradores de forma concisa y legible.

generador = (x ** 2 for x in range(5)) for valor in generador: print(valor)

En este caso, generador es una expresión generadora que crea una secuencia de valores al elevar al cuadrado los números del 0 al 4. Esto se hace de manera eficiente, sin crear una lista completa en memoria.

Entender cómo funcionan los ámbitos en Python es esencial para escribir código limpio y eficiente. Los ámbitos determinan dónde una variable es accesible y cuál es su valor en un momento dado. Además, en el contexto de la herencia y las clases base, es importante comprender cómo Python resuelve los nombres de variables y métodos.

Continúa tu aprendizaje en KeepCoding

Si estás interesado en aprender más sobre los ámbitos en Python y mucho más para convertirte en un desarrollador web profesional, considera unirte al Desarrollo Web Full Stack Bootcamp de KeepCoding. Este bootcamp te proporcionará las habilidades y el conocimiento necesarios para ingresar al sector de la tecnología de la información en poco tiempo. Aprovecha la alta demanda de profesionales en la industria tecnológica y los salarios competitivos que ofrece. ¡Pide más información ya mismo y descubre cómo cambiar tu futuro!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado