Post Destacado

Configurando la Impresión Perfecta de un Libro de Excel

Aunque vivimos en una era digital, a veces todavía es necesario imprimir datos, tablas, gráficos, o información de cualquier tipo que hayamos procesado en Excel. Especialmente si estamos hablando de informes financieros, gráficos estadísticos, o simplemente porque preferiremos analizar la información en formato físico. Sin embargo, Excel es muy flexible y las hojas pueden volverse rápidamente muy extensas, lo que puede complicar las tareas de impresión. A continuación, detallaremos el proceso para configurar y preparar tu libro de Excel para imprimirlo de la mejor manera posible en cada caso. Paso 1: Revisión Preliminar Antes de imprimir, debes revisar cómo quedará el documento una vez impreso. Excel ofrece dos opciones para ello: a. Ve a la pestaña "Archivo", luego elige "Imprimir". Aquí puedes ver cómo se verá tu documento antes de imprimirlo. b.    Utiliza la opción 'Diseño de Página'. Esta perspectiva te dará una vista preliminar de cómo se verá tu libro

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.