Post Destacado

¿Buscas trabajo y no has certificado en Excel? 🤔

Hoy quiero hablarte sobre un tema que puede cambiar tu vida profesional: la certificación oficial de Excel MO-200. Puede que te estés preguntando, ¿por qué debería importarme obtener esta certificación? Pues, sigue leyendo y descubrirás las ventajas que puede ofrecerte. ¿Qué es la Certificación MO-200? La certificación MO-200, también conocida como "Microsoft Office Specialist: Excel Associate (Excel and Excel 2019)", es una credencial oficial otorgada por Microsoft . Este examen valida tus habilidades en Excel, asegurando que eres capaz de manejar eficientemente una amplia gama de tareas dentro de esta poderosa herramienta. Básicamente, todo el mundo agrega en sus CV la frase " Dominio de Excel ", pero casi nadie se preocupa por demostrarlo oficialmente. Esta es tu oportunidad para ser el candidato preferido en tu próxima búsqueda. ¿Por Qué Deberías Considerarla? 1. Mejora tu Currículum:    Tener una certificación oficial en tu currículum te diferencia de otros can...

Namespaces en Python


Un Namespace no tiene una traducción demasiado elegante en español, pero tal vez la más literal sea espacio de nombres. Un espacio de nombres es un sistema donde cada objeto (variable, función, etc.) tiene un nombre único.

Cuando hablamos de namespaces, solemos encontrar una analogía usual para explicarlos: piensa por ejemplo en archivos en la PC. Si estamos dentro de un directorio particular, no podemos tener más de un archivo llamándose igual. Entonces, los nombres de los archivos dentro de ese directorio actúan como un Namespace, ya que cada nombre de archivo es único. Sin embargo, esto no quiere decir que un nombre no pueda repetirse en otros directorios, y si bien dicho nombre se comparte, los archivos se diferencian porque se encuentran en diferentes directorios. Nuevamente, el nombre de los directorios es un Namespace porque cada directorio es único. Pero, otra vez, la combinación directorio y nombre de archivo debe ser única, sino no sabríamos cómo diferenciar un archivo de otro.

Lo anterior tiene implicancias importantes a la hora de programar: una variable llamada, por ejemplo, mi_numero definida en el programa no podrá existir con dos valores diferentes:

mi_numero = 5

mi_numero = 10

print(mi_numero)

En dicha ejecución, cada objeto tiene un nombre único, por lo que dos objetos con el mismo nombre, serán en realidad el mismo, y mi_numero almacenará únicamente el valor 10 en lugar de 5. Sin embargo, ¿qué ocurriría en el siguiente caso?:

mi_numero = 5

def cambia_numero():

    mi_numero = 10

cambia_numero()

print(mi_numero)

La función print() final imprimirá 5, y no 10. ¿Coincide esto con lo que esperabas? Lo que ha ocurrido, es que la función cambia_numero() ha creado un espacio de nombres local cuando la hemos invocado, y el mismo se ha destruido cuando termina el llamado. Con lo cual tenemos que en realidad la función cambia_numero en realidad no hace nada: no tiene efecto alguno en nuestro código. Conocer y dominar este comportamiento te ayudará a predecir la forma en la que se comportarán tus variables, evitando resultados inesperados.

Otra conclusión derivada de lo anterior, es que si tuviéramos un código similar al anterior, pero con ligeras modificaciones:

mi_numero = 5

def cambia_numero():

    numero = 10

cambia_numero()

print(numero)

La variable numero es inaccesible desde el exterior de la función, ya que es un espacio de nombres local, y dicho nombre no existe en un ámbito más general del programa.

Hemos mencionado el espacio de nombres local (aquel que tiene una vida limitada a la ejecución de la función): ese es un ejemplo de espacio de nombres, pero hay otros. Una forma de representarlos es como sigue:



Los namespaces incorporados, son aquellos que pertenecen a Python en sí, y se inician desde el mismo momento que inicia el intérprete de Python. Son todas las palabras clave, tipos de datos, excepciones y funciones propias como print() e input().

Un namespace global, se genera al importar un módulo, o al definir variables o funciones al nivel del programa principal. Cada módulo, a su vez, crea su propio espacio de nombres. Se van creando conforme el programa se ejecuta, y son destruidos una vez que finaliza esta ejecución.

Dos conceptos que han ido apareciendo, sin que los mencionemos explícitamente, son lifetime, y scope. Para que no te agarren deprevenido/a la próxima vez que leas al respecto, lifetime refiere al momento durante el cual existen los espacios de nombre (y cuándo dejan de existir), mientras que scope se refiere al alcance, o dónde podemos accederlos.