8. ● Un módulo permite agrupar funcionalidad común en un
sólo archivo.
● Cuando varios módulos agrupan funcionalidades
comunes, se pueden agrupar, a su vez, en paquetes.
● Python reconoce que un directorio es un paquete
porque contiene un archivo llamado__init .py
Paquetes y módulos
10. ● Cuando se lanza (throw) un
error, si el error no se “atrapa”,
entonces el programa se
detiene.
● Hay veces que queremos evitar
este comportamiento porque
sabemos como arreglar el error.
● Para manejar el error se utilizan
los keywords try / except
● La cláusula else se ejecuta si no
han ocurrido excepciones y antes
de la cláusula finally.
Manejo de errores
try:
#Código a ejecutar
except:
# Código para 'cachar' o 'recibir'
el error y hacer algo
else:
# Código cuando el try SI sirva y NO
se ejecute el except
finally:
# Código que SIEMPRE se va a
ejecutar, independientemente se
ejecute el except o el else
12. def dividir(x, y):
try: #Código a ejecutar
resultado = x / y
except ZeroDivisionError: #Código para 'cachar' el
error
print("¡División por cero!") #Hacer algo
else: #Código cuando el try SI sirva y NO el except
print("El resultado es", resultado)
finally: #Código que SIEMPRE se va a ejecutar
print("Ejecutando la clausula finally")
print(dividir(2,1))#2.0 y clausula finally
dividir(2, 0)#¡División por cero!
dividir("2", "1")#Solo clausula finally y error
Jerarquía de errores en Python
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
13. def encontrar(elemento,lista):
'''Devuelve el indice donde se encuentra el
@elemento en la @lista
Si no lo encuentra devuelve -1
'''
indice=0
while True:
try:
if lista[indice]==elemento:
return indice
except IndexError:
return -1
indice+=1
print(encontrar(4, [2,3,4,5]))
print(encontrar(1, [2,3,4,5]))
Jerarquía de errores en Python
14. ● Programacióndefensiva
● Pueden utilizarse para
verificar que los tipos sean
correctosenunafunción
● También sirven para
debuguear
● El uso del assert en Python
nos permite verificar que
una determinada condición
sea True, y de no serlo, se
lanzará una excepción.
Afirmaciones
# assert <expresion booleana>,
<mensaje de error>
def primera_letra(lista_de_palabras):
primeras_letras=[]
for palabra in lista_de_palabras:
assert type(palabra) == str,
f'{palabra} no es str'
assert len(palabra) > 0, 'No se
permiten str vacios'
primeras_letras.append(palabra[0])
return primeras_letras
15. def primera_letra(lista_palabras):
primeras_letras = []
for palabra in lista_palabras:
try:
assert type(palabra) == str, f'{palabra} no es
String'
assert len(palabra) > 0 , 'No se permiten vacios'
primeras_letras.append(palabra[0])
except AssertionError as e:
print(e)
return primeras_letras
lista = ['Angel',3.5, '', 4 , '4321', 0.53]
print('Primeras letras validas son : ' ,
primera_letra(lista))
Modularización Funciones
16. Si es una buena idea,
continuad y llevadla a
término. Es mucho más fácil
pedir disculpas que conseguir
el permiso necesario