08 Funciones 1.2
08 Funciones 1.2
08 Funciones 1.2
Funciones
Background designed by kjpargeter / Freepik
Miguel Carrasco
DDS1 - 2021
Temario
Estructuras de control
Listas
Funciones integradas
Funciones
§ Definición
§ Paso de parámetros
§ Scope de variables
§ Ejemplos y ejercicios
§ Manejo de excepciones
Los códigos son totalmente distintos, pero hacen lo mismo. Eso pasa mucho
cuando uno está trabajando en una empresa: se define lo que hay que hacer
pero hay libertad de desarrollo. Entonces, ¿cómo coordinan el trabajo?
Importante
Nosotros ya hemos USADO funciones (print, int,
input, …).
Lo que tiene que hacer cada desarrollador DEFINIR la función de forma que
cumpla con lo que debe hacer.
§ Ordenar código
§ Escribir código de manera rápida
§ Compartir código con otros
§ Reusar código en distintas partes de uno o más programas
§ Entre otras cosas
Entrada Salida
Función
“mostrar”
Función
def nombreFuncion():
<instrucciones>
def holaMundo():
print("Nuestra primera funcion")
Función
def nombreFuncion():
<instrucciones>
def holaMundo():
print("Nuestra primera funcion")
invocación
o llamado
holaMundo()
Función
def nombreFuncion(<var1>,…, <varn>):
<instrucciones>
def mostrarPantalla(entrada):
print (entrada)
invocación
mostrarPantalla("holaMundo")
o llamado
Función
def nombreFuncion(<var1>,…, <varn>):
<instrucciones>
return
invocación
sumaNumeros(21, 13)
o llamado
2021 © INTRODUCCIÓN A PYTHON. MIGUEL CARRASCO 12
Función definición
Función
def nombreFuncion(<var1>,…, <varn>):
<instrucciones>
return
def numEsPar(num):
if (num%2==0):
print ("SI es par")
return
print ("NO es par")
return
invocación
o llamado
numEsPar(21)
Función
def nombreFuncion(<var1>,…, <varn>):
<instrucciones>
return
def numPrimo(num):
for i in range(2,num,1):
if (num%i==0):
print ("NO primo")
return
print ("SI primo")
return
invocación
o llamado numPrimo(21)
Función
def nombreFuncion(<var1>,…, <varn>):
<instrucciones>
return(<resultado>)
def numEsPar(num):
if (num%2==0):
return(1)
return(0)
Return permite que se
retorne el resultado a
invocación quien invoca la función
o llamado if (numEsPar(21)==1):
print ("ES par")
else:
print ("NO es par")
Función
def nombreFuncion(<var1>,…, <varn>):
<instrucciones>
return(<resultado>)
def numPrimo(num):
for i in range(2,num,1):
if (num%i==0):
return 0
return 1
invocación
o llamado if (numPrimo(21)==0):
print ("NO primo")
else:
print ("SI primo")
Función
def nombre_funcion(parámetro_1, parámetro_2, …):
<instrucciones>
return <valor>
def holaMundo(nombre):
return "Hola" + nombre + "desde la función"
llamado llamado
holaMundo() mostrarPantalla("holaMundo")
Entrada_1
Entrada_2
“mostrar” Entrada “mostrar” Salida
Entrada_n
Estructuras de control
Listas
Funciones integradas
Funciones
§ Definición
§ Scope de variables
§ Paso de parámetros
§ Ejemplos y ejercicios
§ Manejo de excepciones
num=21
def mifuncion(num):
num=num+1
print('dentro de la función', num)
return
mifuncion(num)
print('fuera de la funcion', num)
num=21
num=21
def mifuncion(num):
num=num+1
print('dentro de la función', num)
return
mifuncion(num)
print('fuera de la funcion', num)
num=21
num=21
def mifuncion(num):
num=num+1
print('dentro de la función', num)
return
mifuncion(num)
print('fuera de la funcion', num)
Entrada
num=21
Función
“mifuncion”
num=21
num=21
def mifuncion(num):
num=num+1
print('dentro de la función', num)
return num=21
mifuncion(num)
print('fuera de la funcion', num)
Entrada
num=21
Función
“mifuncion”
num=21
num=21
def mifuncion(num):
num=num+1
print('dentro de la función', num)
return num=22
mifuncion(num)
print('fuera de la funcion', num)
Entrada
num=21
Función
“mifuncion”
num=21
num=21
def mifuncion(num):
num=num+1
print('dentro de la función', num)
return num=22
mifuncion(num)
print('fuera de la funcion', num)
dentro de la función 22
Entrada
num=21
Función
“mifuncion”
num=21
num=21
def mifuncion(num):
num=num+1
print('dentro de la función', num)
return num=22
mifuncion(num)
print('fuera de la funcion', num)
dentro de la función 22
Entrada Salida
num=21
Función
“mifuncion”
return
num=21
num=21
def mifuncion(num):
num=num+1
print('dentro de la función', num)
return num=22
mifuncion(num)
print('fuera de la funcion', num)
dentro de la función 22
Entrada Salida
num=21
Función
“mifuncion”
return
num=21
num=21
def mifuncion(num):
num=num+1
print('dentro de la función', num)
return num=22
mifuncion(num)
print('fuera de la funcion', num)
dentro de la función 22
fuera de la función 21
Entrada Salida
num=21
Función
“mifuncion”
return
Estructuras de control
Listas
Funciones integradas
Funciones
§ Definición
§ Scope de variables
§ Paso de parámetros
§ Ejemplos y ejercicios
§ Manejo de excepciones
var1 = 10
var2 = 5
var2 = F1(var1, var2) Entrada
var1=10 Función
print("var1 es ", var1) var2=5 “F1”
print("var2 es ", var2)
var1 = 10
var2 = 5
Entrada Salida
var2 = F1(var1, var2)
var1=10 Función
F2(var1)
print("var1 es ", var1) var2=5 “F1”
print("var2 es ", var2)
var1 = 10
var2 = 5
Entrada Salida
var2 = F1(var1, var2)
var1=10 Función
F2(var1)
print("var1 es ", var1) var2=5 “F1”
print("var2 es ", var2)
Entrada Salida
def F2(aux): Función 30
aux= 15
aux = aux*2 “F2”
return (aux) return
var1 = 10
var2 = 5
Entrada Salida
var2 = F1(var1, var2)
var1=10 Función
F2(var1)
print("var1 es ", var1) var2=5 “F1”
print("var2 es ", var2)
def F2(aux): 30
aux = aux*2
return (aux)
var1 = 10
var2 = 5
Entrada Salida
var2 = F1(var1, var2)
var1=10 Función 30
print("var1 es ", var1) var2=5 “F1”
print("var2 es ", var2) return
def F1(var1, var2): ¿Qué podemos hacer con este valor? Resp. Lo
var1 = var1+var2 podemos asignar a otra variable o bien mostrar por
return (F2(var1)) pantalla
La función invocada se
transforma en un valor
var1 = 10
var2 = 5
Entrada Salida
var2 = F1(var1, var2)
var1=10 Función 30
print("var1 es ", var1) var2=5 “F1”
print("var2 es ", var2) return
A la variable var1 de F1 se le
def F1(var1, var2):
var1 = var2/var1 asigna el valor 5, mientras que a
return (var1) la variable var2 de F1 se le
asigna el valor 10.
var1 = 10
var2 = 5
var2 = F1(var1, var2) El valor de var1 (10) y var2 (5) se
print("var1 es ", var1, " y var2 es ", var2 ) envían a la función F1, no la
variable
Estructuras de control
Listas
Funciones integradas
Funciones
§ Definición
§ Paso de parámetros
§ Scope de variables
§ Ejemplos y ejercicios
§ Manejo de excepciones
Cada función tiene sus propias variables (no las comparte con
ninguna otra función).
var1 = 10
var2 = 5
var2 = suma(var1, var2)
print("var1 es ", var1, " y var2 es ", var2 )
a = 10
1-> a b x y
b = 5 1-> 10 -- XX XX
2-> 2-> 10 5 XX XX
b= cambios(b, a) 3-> XX XX 5 10
5-> 4->
4-> XX XX 6 10
5->
5-> 10 20 XX XX
Tiempo : 10 minutos
Tiempo : 10 minutos
P1 = numpy.array([0, 0])
P2 = numpy.array([1, 1])
print(dist(P1,P2))
Tiempo : 10 minutos
Tiempo : 10 minutos
Cree una función que reciba num y pos e itere hasta que la mosca sea atrapada por
alguna araña. Luego, muestre por pantalla el número de veces que la mosca estuvo en
cada posición y el número total de movimientos realizados.
Tiempo : 20 minutos
import numpy
import random
if temp<0.33:
pos=pos-1
else:
if temp>0.66:
pos=pos+1
print(arreglo)
print("el numero de movimientos es ", arreglo.sum())
mosca(20,10)
2021 © INTRODUCCIÓN A PYTHON. MIGUEL CARRASCO 52
Temario
Estructuras de control
Listas
Funciones integradas
Funciones
§ Definición
§ Paso de parámetros
§ Scope de variables
§ Ejemplos y ejercicios
§ Manejo de excepciones
def foo():
res= 1/0
return(res)
foo()
File "/opt/anaconda3/lib/python3.7/site-
packages/spyder_kernels/customize/spydercustomize.py",
line 827, in runfile
execfile(filename, namespace)
File "/opt/anaconda3/lib/python3.7/site-
packages/spyder_kernels/customize/spydercustomize.py",
line 110, in execfile
exec(compile(f.read(), filename, 'exec'),
namespace)
File
"/Users/mlacarrasco/Dropbox/_BACKUP/Asignaturas/2019/s
em_01/MagisterDataScience/clases/modulo_6_bibliotecas/
exeption_test.py", line 16, in <module>
foo()
File
"/Users/mlacarrasco/Dropbox/_BACKUP/Asignaturas/2019/s
em_01/MagisterDataScience/clases/modulo_6_bibliotecas/
exeption_test.py", line 12, in foo
res= 1/0
import sys
def foo(bar=None):
res= 1/0
return(res)
El programa evalúa
try:
la función, y en
caso que ésta foo()
tenga algún except:
problema, enviará exc_type, exc_value, tb = sys.exc_info()
a una excepción
print(exc_type)
import sys
def foo(bar=None):
res= 1/0
return(res)
try:
foo()
except:
exc_type, exc_value, tb = sys.exc_info()
print(exc_type)
import sys
def foo(bar=None):
res= 1/0
return(res) Podemos capturar un error
específico y definir un error
para cada caso
try:
foo()
except ZeroDivisionError:
print("Error de division por cero")
else:
print(”Función ejecutada sin errores")
Estructuras de control
Listas
Funciones integradas
Funciones
Funciones avanzadas
§ lambda , map, filter, reduce
num = mifuncion(22)
print(num)
def mifuncion(num):
num=num+1
return(num)
num = mifuncion(22)
print(num)
def mifuncion(num):
return(num+1)
num = mifuncion(22)
print(num)
num = mifuncion(22)
print(num)
num = mifuncion(22)
print(num)
lista =[2,5,1,4]
print(list(map(mifuncion, lista)))
lista =[2,5,1,4]
print(list(filter(mifuncion, lista)))
lista = [2,5,1,4]
print(list(filter(mifuncion, lista)))
versión con lambda
lista =[2,5,1,4]
lista =[2,5,1,4]
print(reduce(suma, lista))
lista = [ 2 5 1 4 ]
suma(2,5)
suma(7,1)
suma(8, 4) 12
2021 © INTRODUCCIÓN A PYTHON. MIGUEL CARRASCO 70
Reduce
lista = [ 2 5 7 1 4 ]
a b
7
a b
b
14
a
15
a b
19
2021 © INTRODUCCIÓN A PYTHON. MIGUEL CARRASCO 71
Reduce | Ejemplo
lista =[2, 5, 7, 1, 4]
lista = [ 2 5 7 1 4 ]
a b
5
a b
7 a b
7
a b
7
2021 © INTRODUCCIÓN A PYTHON. MIGUEL CARRASCO 72