Documentos de Académico
Documentos de Profesional
Documentos de Cultura
dispositivos IoT
Parte II
SIY 6121
Programando dispositivos IoT
Parte II
Introducción
3
Administración de
módulos
Administración de
módulos
¿Qué es un módulo?
El código de computadora tiene una tendencia a crecer. Podemos decir que el código que
no crece probablemente sea completamente inutilizable o este abandonado.
- Un código más grande siempre significa un mantenimiento más difícil.
- La búsqueda de errores siempre es más fácil cuando el código es más pequeño
Cada una de estas partes se puede (muy probablemente) dividir en otras más pequeñas,
y así sucesivamente. Tal proceso a menudo se denomina descomposición.
¿Cómo se divide una pieza de software en partes separadas pero cooperantes? Esta es la
pregunta. Módulos son la respuesta!!!.
5
Administración de
módulos
¿Cómo hacer uso de un módulo?
El manejo de los módulos consta de dos cuestiones diferentes:
- Utilizar un módulo ya existente, escrito por otra persona o creado por el
programador mismo en algún proyecto complejo.
- Crear un nuevo módulo, ya sea para uso propio o para facilitar la vida de otros
programadores.
Características:
- Un módulo se identifica por su nombre. Si se desea utilizar cualquier módulo,
se necesita saber su nombre.
- Todos estos módulos, junto con las funciones integradas, forman la Biblioteca
estándar de Python
- Cada módulo consta de entidades (como un libro consta de capítulos). Estas
entidades pueden ser funciones, variables, constantes, clases y objetos.
6
Administración de
módulos
Importando un módulo
Para que un módulo sea utilizable, hay que importarlo (piensa en ello como sacar un libro
del estante). La importación de un módulo se realiza mediante una instrucción llamada
import.
»»»import math, sys
La cláusula contiene:
Código ejemplo
8
Administración de
módulos
Otro método para importar módulos
En el segundo método, la sintaxis del import señala con precisión qué entidad (o
entidades) del módulo son aceptables en el código:
La función general llamada random() (no debe confundirse con el nombre del módulo)
produce un número flotante x entre el rango (0.0, 1.0) - en otras palabras: (0.0 <= x < 1.0).
10
Administración de
módulos
Construcción de módulos y paquetes
● Un módulo es un contenedor lleno de funciones - puedes empaquetar tantas funciones como desees
en un módulo y distribuirlo por todo el mundo.
● 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).
● Crear muchos módulos puede causar desorden: tarde que 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?.
● Sí lo hay, es un paquete: en el mundo de los módulos, un paquete juega un papel similar al de una
carpeta o directorio en el mundo de los archivos.
11
Administración de
módulos
Construcción de módulos y paquetes
Se necesitan dos archivos para realizar esta tarea. Cree archivo vacio module.py
#touch module.py
#vim main.py
import module.py
12
Administración de
módulos
Construcción de módulos y paquetes
13
Manejo de excepciones
Manejo de excepciones
- La palabra reservada try comienza con un bloque de código el cual puede o no estar
funcionando correctamente.
- Después, Python intenta realizar la acción arriesgada: si falla, se genera una excepción y
Python comienza a buscar una solución.
try:
print("1")
x=1/0
print("2")
except:
print("Oh cielos, algo salio mal...")
print("3")
- La palabra reservada except comienza con un bloque de código que será ejecutado si
algo dentro del bloque try sale mal.
15
Manejo de excepciones
try:
x = int(input("Ingresa un número: "))
y=1/x
except:
print("Oh cielos, algo salio mal...")
print("FIN.")
=============================================================================================
try:
x = int(input("Ingresa un número: "))
y=1/x
print(y)
except ZeroDivisionError:
print("No puedes dividir entre cero, lo siento.")
except ValueError:
print("Debes ingresar un valor entero.")
except:
print("Oh cielos, algo salio mal...")
print("THE END.") 16
Manejo de excepciones
17
Caracteres y cadenas
Caracteres y cadenas
En primer lugar, las cadenas de Python son secuencias inmutables (no modificables). Pero
si se pueden analizar
Por ejemplo, la función len() empleada por cadenas devuelve el número de caracteres
que contiene el argumento.
>>> print(len(palabra))
*** La diagonal invertida (\) empleada como un caracter de escape, no está incluida en la
longitud total de la cadena.
>>> print(len(yo_soy))
19
Caracteres y cadenas
Cadenas multilínea
Para la generación de cadenas de texto que requieran varias líneas es posible generar una
variable utilizando el apóstrofe triplicado ´´´
Para esto, python utiliza el carácter especial \n el cual es utilizado para forzar un avance
de línea.
20
Caracteres y cadenas
Al igual que otros tipos de datos, las cadenas tienen su propio conjunto de operaciones
permitidas, aunque son bastante limitadas en comparación con los números.
● Concatenadas (unidas).
● Replicadas.
21
Caracteres y cadenas
Ejemplo
22
Caracteres y cadenas
Las cadenas no son listas, pero pueden ser tratadas como tal en muchos casos.
Por ejemplo, si deseas acceder a cualquiera de los caracteres de una cadena, puedes
hacerlo usando indexación o el número de la ubicación de cada caracter.
23
Caracteres y cadenas
También es posible utilizar las cadenas como rangos de iteración para la estructura de
repetición de código FOR
25
Manejo de
archivos
Manejo de archivos
Es por eso que debes evitar crear el archivo utilizando un procesador de texto avanzado
como MS Word, LibreOffice Writer o algo así. Utiliza los conceptos básicos que ofrece tu
sistema operativo: Bloc de notas, vim, gedit, etc.
Para abrir un archivo con codificacion UTF-8 utilizamos la función open() de la siguiente
manera:
El método readline() intenta leer una línea completa de texto del archivo, y la devuelve
como una cadena en caso de éxito. De lo contrario, devuelve una cadena vacía.
from os import strerror
try:
ccnt = lcnt = 0
s = open('text.txt', 'rt')
line = s.readline()
while line != '':
lcnt += 1
for ch in line:
print(ch, end='')
ccnt += 1
line = s.readline()
s.close()
print("\n\nCaracteres en el archivo: ", ccnt)
print("Lineas en el archivo: ", lcnt)
except IOError as e:
28
print("Se produjo un error de E/S: ", strerr(e.errno))
Manejo de archivos
El método para escribir archivos se llama write() y espera solo un argumento: una cadena
que se transferirá a un archivo abierto, el modo de apertura debe reflejar la forma en que
se transfieren los datos - escribir en un archivo abierto en modo de lectura no tendrá
éxito.
No se agrega carácter de nueva línea al argumento de write(), por lo que debes agregarlo
tu mismo si deseas que el archivo se complete con varias líneas.
29
Manejo de archivos
El ejemplo crea un archivo llamado newtext.txt (nota: el modo de apertura w asegura que
el archivo se creará desde cero, incluso si existe y contiene datos) y luego pone diez líneas
en él.
try:
fo = open('newtext.txt', 'wt') #un nuevo archivo (newtext.txt) es creado
for i in range(10):
s = "línea #" + str(i+1) + "\n"
for ch in s:
fo.write(ch)
fo.close()
except IOError as e:
print("Se produjo un error de E/S: ", strerr(e.errno))
30
Solicitudes HTTP
Solicitudes HTTP
Librería Request
Una vez que la libreria está instalada, se puede utilizar en la aplicación. La importación
tiene este aspecto:
import requests
32
Solicitudes HTTP
La solicitud GET
Los métodos HTTP, como GET y POST, determinan qué acción está intentando ejecutar al
realizar una solicitud HTTP. Además de GET y POST, existen otros métodos comunes que
usará más adelante en este tutorial.
Uno de los métodos HTTP más comunes es GET. El método GET indica que está
intentando obtener o recuperar datos de un recurso específico. Para realizar una solicitud
GET, utilice:
request.get ().
Para probar esto, puede realizar una solicitud GET a la API REST raíz de GitHub llamando a
get () con la siguiente URL:
>>> requests.get('https://api.github.com')
<Response [200]>
33
Solicitudes HTTP
En este ejemplo, capturó el valor de retorno de get (), que es una instancia de Response,
y lo almacenó en una variable llamada respuesta. Ahora puede usar la respuesta para ver
mucha información sobre los resultados de su solicitud GET.
34
Solicitudes HTTP
Aparte de GET, otros métodos HTTP populares incluyen POST, PUT, DELETE, HEAD, PATCH
y OPTIONS. request proporciona un método, con una firma similar a get (), para cada uno
de estos métodos HTTP:
35