Encuentro13 Sincronico
Encuentro13 Sincronico
Encuentro13 Sincronico
Encuentro 12 Sincrónico
Prof. Guillermo Oliva
¿Cómo saber dónde estás?
Esto significa que algunas de las acciones del programa tienen que recorrer un largo
camino para ejecutarse con éxito, imagina que:
• Tu código quiere crear un archivo, por lo que invoca una de las funciones de Python.
• Python acepta la orden, la reorganiza para cumplir con los requisitos del sistema
operativo local (es como poner el sello "aprobado" en una solicitud) y lo envía.
• El SO comprueba si la solicitud es razonable y válida (por ejemplo, si el nombre del
archivo se ajusta a algunas reglas de sintaxis) e intenta crear el archivo. Tal operación,
aparentemente es muy simple, no es atómica: consiste de muchos pasos menores
tomados por...
• El hardware, el cual es responsable de activar los dispositivos de almacenamiento (disco
duro, dispositivos de estado sólido, etc.) para satisfacer las necesidades del sistema
operativo.
¿Cómo saber dónde estás?
Por lo general, no eres consciente de todo ese alboroto: quieres que se cree el archivo y
eso es todo.
Pero a veces quieres saber más, por ejemplo, el nombre del sistema operativo que aloja
Python y algunas características que describen el hardware que aloja el sistema operativo.
Hay un módulo que proporciona algunos medios para permitir saber dónde se encuentra y
qué componentes funcionan. El módulo se llama platform. Veamos algunas de las
funciones que brinda.
Funciones seleccionadas del módulo platform
Ahora:
Windows-Vista-6.0.6002-SP2
Windows-Vista-6.0.6002-SP2
Windows-Vista
Linux-3.18.62-g6-x86_64-Intel-R-_Core-TM-_i3-2330M_CPU_@_2.20GHz-with-gentoo-2.3
Linux-3.18.62-g6-x86_64-Intel-R-_Core-TM-_i3-2330M_CPU_@_2.20GHz-with-gentoo-2.3
Linux-3.18.62-g6-x86_64-Intel-R-_Core-TM-_i3-2330M_CPU_@_2.20GHz-with-glibc2.3.4
Funciones seleccionadas del módulo platform
Linux-4.4.0-1-rpi2-armv7l-with-debian-9.0
Linux-4.4.0-1-rpi2-armv7l-with-debian-9.0
Linux-4.4.0-1-rpi2-armv7l-with-glibc2.9
Funciones seleccionadas del módulo platform
También puedes ejecutar el programa en el IDLE de tu máquina local para verificar qué
salida tendrá.
Funciones seleccionadas del módulo platform
A veces, es posible que solo se desee conocer el nombre genérico del procesador
que ejecuta el sistema operativo junto con Python y el código, una función llamada
machine() te lo dirá. Como anteriormente, la función devuelve una cadena.
Funciones seleccionadas del módulo platform
La función processor() devuelve una cadena con el nombre real del procesador (si
lo fuese posible).
Funciones seleccionadas del módulo platform
Una función llamada system() devuelve el nombre genérico del sistema operativo
en una cadena.
Funciones seleccionadas del módulo platform
La versión del sistema operativo se proporciona como una cadena por la función
version().
Ejecuta el código y verifica su salida.
Funciones seleccionadas del módulo platform
Aquí solo hemos cubierto los conceptos básicos de los módulos de Python. Los módulos de Python
conforman su propio universo, en el que Python es solo una galaxia, y nos aventuraríamos a decir que
explorar las profundidades de estos módulos puede llevar mucho más tiempo que familiarizarse con
Python "puro".
Además, la comunidad de Python en todo el mundo crea y mantiene cientos de módulos adicionales
utilizados en aplicaciones muy específicas como la genética, la psicología o incluso la astrología.
Estos módulos no están (y no serán) distribuidos junto con Python, o a través de canales oficiales, lo que
hace que el universo de Python sea más amplio, casi infinito.
Puedes leer sobre todos los módulos estándar de Python aquí: https://docs.python.org/3/py-
modindex.html.
No te preocupes, no necesitarás todos estos módulos. Muchos de ellos son muy específicos.
Todo lo que se necesita hacer es encontrar los módulos que se desean y aprender a cómo usarlos. Es fácil.
¿Qué es un paquete?
Por supuesto, no es una buena idea mezclar funciones con diferentes áreas de
aplicación dentro de un módulo (al igual que en una biblioteca: nadie espera que
los trabajos científicos se incluyan entre los cómics), así que se deben agrupar las
funciones cuidadosamente y asignar un nombre claro e intuitivo al módulo que las
contiene (por ejemplo, no le des el nombre videojuegos a un módulo que
contiene funciones destinadas a particionar y formatear discos duros).
¿Qué es un paquete?
Crear muchos módulos puede causar desorden: tarde o temprano querrás agrupar
tus módulos de la misma manera que previamente has agrupado funciones: ¿Existe
un contenedor más general que un módulo?.
Se necesitan dos archivos para realizar estos experimentos. Uno de ellos será el módulo
en sí. Está vacío ahora. No te preocupes, lo vas a llenar con el código real.
El archivo lleva por nombre module.py. No muy creativo, pero es simple y claro.
No deberías ver nada. Esto significa que Python ha importado con éxito el
contenido del archivo module.py. No importa que el módulo esté vacío por ahora.
El primer paso ya está hecho, pero antes de dar el siguiente paso, queremos que
eches un vistazo a la carpeta en la que se encuentran ambos archivos.
¿Notas algo interesante?
Puedes mirar dentro del archivo: el contenido es completamente ilegible para los
humanos. Tiene que ser así, ya que el archivo está destinado solo para uso de
Python.
Cuando Python importa un módulo por primera vez, traduce el contenido a una
forma "semi" compilada. El archivo no contiene código en lenguaje máquina:
es código semi-compilado interno de Python, listo para ser ejecutado por el
intérprete de Python. Como tal archivo no requiere tantas comprobaciones como
las de un archivo fuente, la ejecución comienza más rápido y también se ejecuta
más rápido.
¿Qué es un paquete?
Gracias a eso, cada importación posterior será más rápida que interpretar el código
fuente desde cero.
Python puede verificar si el archivo fuente del módulo ha sido modificado (en este
caso, el archivo pyc será reconstruido) o no (cuando el archivo pyc pueda ser
ejecutado al instante). Este proceso es completamente automático y transparente,
no se tiene que estar tomando en cuenta.
¿Qué es un paquete?
Python puede hacer mucho más. También crea una variable llamada __name__.
Además, cada archivo fuente usa su propia versión separada de la variable, no se
comparte entre módulos.
Te mostraremos cómo usarlo. Modifica el módulo un poco:
¿Qué es un paquete?