Funciones en python
Daniel Rambaut
March 15, 2024
Daniel Rambaut Funciones en python March 15, 2024 1 / 44
Tabla de contenidos
1 Funciones
2 flujo de ejecución
3 Llamado de multiplex funciones
4 Variables locales
5 Pasando argumentos a una función
6 Mecánicas de argumentos
7 Variables globales
8 Valores retornados de funciones
9 Modulos
Daniel Rambaut Funciones en python March 15, 2024 2 / 44
Introducción a la Programación - Python
Una función es un grupo de declaraciones que existen dentro de un
programa para realizar una tarea especı́fica.
Hemos estado usando varias funciones incorporadas en Python,
incluyendo:
print()
range()
len()
random.randint()
etc.
Daniel Rambaut Funciones en python March 15, 2024 3 / 44
Funciones
La mayorı́a de los programas realizan tareas lo suficientemente
grandes como para ser divididas en subtareas.
Por esta razón, los programadores a menudo organizan sus
programas en fragmentos más pequeños y manejables escribiendo
sus propias funciones.
En lugar de escribir un gran conjunto de instrucciones, podemos
descomponer un programa en varias funciones pequeñas, lo que
nos permite ”dividir y conquistar” un problema de programación.
Daniel Rambaut Funciones en python March 15, 2024 4 / 44
Definiendo Funciones
Las funciones, al igual que las variables, deben ser nombradas y
creadas antes de poder utilizarlas.
Las mismas reglas de nomenclatura se aplican tanto a variables
como a funciones:
No se pueden utilizar las palabras reservadas de Python.
No se pueden usar espacios.
El primer carácter debe ser A-Z, a-z o el carácter “ ”.
Después del primer carácter, se pueden usar A-Z, a-z, “ ” o 0-9.
Los caracteres en mayúscula y minúscula se distinguen entre sı́.
Daniel Rambaut Funciones en python March 15, 2024 5 / 44
Definiendo Funciones
Al igual que las variables, las funciones deben ser nombradas y
creadas antes de que puedas usarlas.
Las mismas reglas de nomenclatura aplican tanto para variables
como para funciones.
Ejemplo de definición y llamada de función:
Código
def myfunction():
print ("Impreso desde dentro de una función")
# Llamada a la función
myfunction()
Daniel Rambaut Funciones en python March 15, 2024 6 / 44
Algunas notas sobre las funciones
Cuando ejecutas una función, se dice que la ”llamas”.
Una vez que una función ha completado su ejecución, Python
regresa a la lı́nea inmediatamente después de la llamada inicial a
la función.
Al llamar a una función, comúnmente se dice que el ”control” del
programa ha sido transferido a la función. La función es
responsable de la ejecución del programa.
Las funciones deben ser definidas antes de que puedan ser
utilizadas. En Python, generalmente colocamos todas nuestras
funciones al principio de nuestros programas.
Daniel Rambaut Funciones en python March 15, 2024 7 / 44
Algunas notas sobre las funciones
Cuando ejecutas una función, se dice que la ”llamas”.
Una vez que una función ha completado su ejecución, Python
regresa a la lı́nea inmediatamente después de la llamada inicial a
la función.
Al llamar a una función, comúnmente se dice que el ”control” del
programa ha sido transferido a la función. La función es
responsable de la ejecución del programa.
Las funciones deben ser definidas antes de que puedan ser
utilizadas. En Python, generalmente colocamos todas nuestras
funciones al principio de nuestros programas.
Daniel Rambaut Funciones en python March 15, 2024 8 / 44
Flujo de Ejecución con Funciones
1 def hello () :
2 print ( " Hi there ! " )
3 print ( " I 'm a function ! " )
4
5 print ( " Good morning " )
6 print ( " Welcome to class " )
7
8 hello ()
9
10 print ( " And now we ' re done . " )
Daniel Rambaut Funciones en python March 15, 2024 9 / 44
Llamada a la función hello
1 def hello () :
2 print (" Hello there !")
3
4 def goodbye () :
5 print (" See ya !")
6
7 hello ()
8 goodbye ()
Daniel Rambaut Funciones en python March 15, 2024 10 / 44
Llamada de Funciones Dentro de Funciones
1 def main () :
2 print (" I have a message for you .")
3 message ()
4 print (" Goodbye !")
5
6 def message () :
7 print (" The password is 'foo '")
8
9 main ()
Daniel Rambaut Funciones en python March 15, 2024 11 / 44
Desafı́o de Programación: Cuadrado Hueco
Escribe una función que imprima el patrón mostrado a utilizando
funciones. Además de preguntarle al usuario la altura del rectángulo
que se quiere dibujar.
Daniel Rambaut Funciones en python March 15, 2024 12 / 44
Variables Locales
Daniel Rambaut Funciones en python March 15, 2024 13 / 44
Variables Locales
Las funciones son como ”mini programas”.
Puedes crear variables dentro de las funciones tal como lo haces en
tu programa principal.
Daniel Rambaut Funciones en python March 15, 2024 14 / 44
Variables Locales
1 def bugs () :
2 numbugs = int ( input ( ' How many bugs ? ') )
3 print ( numbugs )
4
5 bugs ()
Daniel Rambaut Funciones en python March 15, 2024 15 / 44
Variables Locales
Las variables definidas dentro de una función se consideran
”locales” a esa función.
Esto significa que solo existen dentro de la función. Objetos fuera
del ”alcance” de la función no podrán acceder a esa variable.
Daniel Rambaut Funciones en python March 15, 2024 16 / 44
Variables Locales
1 def bugs () :
2 numbugs = int ( input ( ' How many bugs ? ') )
3 print ( numbugs )
4
5 bugs ()
6 print ( numbugs )
Daniel Rambaut Funciones en python March 15, 2024 17 / 44
Variables Locales
Diferentes funciones pueden tener sus propias variables locales que
usan el mismo nombre de variable.
Estas variables locales no se sobrescribirán entre sı́, ya que existen
en ”alcances” diferentes.
Daniel Rambaut Funciones en python March 15, 2024 18 / 44
Variables Locales
1 def newjersey () :
2 numbugs = 1000
3 print ( " NJ has " , numbugs , " bugs " )
4
5 def newyork () :
6 numbugs = 2000
7 print ( " NY has " , numbugs , " bugs " )
8
9 newjersey ()
10 newyork ()
Daniel Rambaut Funciones en python March 15, 2024 19 / 44
Pasar Argumentos a una Función
A veces es útil no solo llamar a una función, sino también enviarle
uno o más datos como argumento.
Este proceso es idéntico a lo que hemos estado haciendo con las
funciones integradas que hemos estudiado hasta ahora.
1 x = random . randint (1 , 5) # enviar 2 enteros
2 y = len ( ' Obama ') # enviar 1 cadena
3
Daniel Rambaut Funciones en python March 15, 2024 20 / 44
Pasar Argumentos a una Función
1 def square ( num ) :
2 print ( num **2) # num asume el valor del
3 # argumento que se pasa a
4 # la f u n c i n (5)
5 square (5)
Daniel Rambaut Funciones en python March 15, 2024 21 / 44
Pasar Argumentos a una Función
Al pasar argumentos, necesitas informar a tu función qué tipo de
datos debe esperar en la definición de la función.
Esto se hace estableciendo un nombre de variable en la definición
de la función. Esta variable será declarada automáticamente cada
vez que llames a tu función y asumirá el valor del argumento
pasado a la función.
Daniel Rambaut Funciones en python March 15, 2024 22 / 44
Pasar Múltiples Argumentos a una Función
De hecho, puedes pasar cualquier número de argumentos a una
función.
Una manera de hacer esto es pasar los argumentos ”por posición”.
Daniel Rambaut Funciones en python March 15, 2024 23 / 44
Pasar Múltiples Argumentos a una Función
1 def average ( num1 , num2 , num3 ) :
2 sum = num1 + num2 + num3
3 avg = sum / 3
4 print ( avg )
5
6 average (100 , 90 , 92)
Daniel Rambaut Funciones en python March 15, 2024 24 / 44
Pasar Argumentos a una Función en Python
Cuando pasamos un argumento a una función en Python, en
realidad estamos pasando su ”valor” a la función, y no la variable
en sı́.
Daniel Rambaut Funciones en python March 15, 2024 25 / 44
Paso de Argumentos por Valor
1 def change_me ( v ) :
2 print ( " function got : " , v )
3 v = 10
4 print ( " argument is now : " , v )
5
6 myvar = 5
7 print ( " starting with : " , myvar )
8 change_me ( myvar )
9 print ( " ending with : " , myvar )
Daniel Rambaut Funciones en python March 15, 2024 26 / 44
Paso por Valor
Este comportamiento se llama ”paso por valor”.
Esencialmente, estamos creando dos copias de los datos que se
pasan: una que permanece en el programa principal y otra que se
pasa como argumento a nuestra función.
Este comportamiento nos permite establecer un mecanismo de
comunicación ”unidireccional”: podemos enviar datos a una
función como un argumento, pero la función no puede comunicarse
de vuelta actualizando o cambiando el argumento de ninguna
manera.
(Hablaremos sobre cómo comunicar de vuelta al llamador en un
momento).
Daniel Rambaut Funciones en python March 15, 2024 27 / 44
Variables Globales
Cuando creas una variable dentro de una función, decimos que la
variable es ”local” a esa función.
Esto significa que solo puede ser accedida por instrucciones dentro
de la función que la creó.
Cuando una variable es creada fuera de todas tus funciones, se
considera una ”variable global”.
Las variables globales pueden ser accedidas por cualquier
instrucción en tu archivo de programa, incluyendo por
instrucciones en cualquier función.
Todas las variables que hemos estado creando hasta ahora en clase
han sido variables globales.
Daniel Rambaut Funciones en python March 15, 2024 28 / 44
Variables Globales
1 name = ' Obama '
2
3 def showname () :
4 print ( " Function : " , name )
5
6 print ( " Main program : " , name )
7 showname ()
Daniel Rambaut Funciones en python March 15, 2024 29 / 44
Modificar Variables Globales Dentro de una Función
Si deseas poder cambiar una variable global dentro de una función,
primero debes indicarle a Python que deseas hacer esto usando la
palabra clave global dentro de tu función.
Daniel Rambaut Funciones en python March 15, 2024 30 / 44
Modificar una Variable Global Dentro de una Función
1 name = ' Obama '
2
3 def showname () :
4 global name
5 print ( " Function 1: " , name )
6 name = ' John '
7 print ( " Function 2: " , name )
8
9 print ( " Main program 1: " , name )
10 showname ()
11 print ( " Main program 2: " , name )
Daniel Rambaut Funciones en python March 15, 2024 31 / 44
Funciones que Devuelven Valores
Las funciones que devuelven valores son aquellas que retornan un
valor a la parte del programa que inició la llamada a la función.
Son casi idénticas al tipo de funciones que hemos estado
escribiendo hasta ahora, pero tienen la capacidad adicional de
enviar información de vuelta al final de la llamada a la función.
¡Hemos estado usando secretamente estas todo el semestre!
Ejemplos
somestring = input("Dime tu nombre")
somenumber = random.randint(1,5)
Daniel Rambaut Funciones en python March 15, 2024 32 / 44
Escribir Funciones que Devuelven Valores
Usas casi la misma sintaxis para escribir una función que devuelve
un valor que la que usarı́as para escribir una función normal.
La única diferencia es que necesitas incluir una instrucción return
en tu función para indicarle a Python que pretendes devolver un
valor al programa que hizo la llamada.
La instrucción return hace que una función termine
inmediatamente. Es como la instrucción break para un bucle.
Una vez que se encuentra una instrucción return, la función no
procederá más allá de ella. El control del programa se devuelve al
llamador.
Daniel Rambaut Funciones en python March 15, 2024 33 / 44
Funciones que Devuelven Valores
1 def myfunction ( arg1 , arg2 ) :
2 # Realiza algunas operaciones
3 resultado = arg1 + arg2 # Ejemplo de o p e r a c i n
4 return resultado
5
6 # Llamar a la f u n c i n
7 valorRetornado = myfunction (10 , 50)
Daniel Rambaut Funciones en python March 15, 2024 34 / 44
Notación IPO
Al empezar a escribir funciones más avanzadas, deberı́as pensar en
documentarlas basándote en su Entrada, Procesamiento y Salida
(IPO).
Ejemplo
1 # function : add_ages
2 # input : age1 ( integer ) , age2 ( integer )
3 # processing : combina los dos enteros
4 # output : devuelve el valor combinado
5 def add_ages ( age1 , age2 ) :
6 sum = age1 + age2
7 return sum
Daniel Rambaut Funciones en python March 15, 2024 35 / 44
Retorno de Múltiples Valores en Funciones
Las funciones pueden devolver múltiples valores utilizando la siguiente
sintaxis:
Ejemplo
1 def testfunction () :
2 x = 5
3 y = 10
4 return x , y
5
6 p , q = testfunction ()
Daniel Rambaut Funciones en python March 15, 2024 36 / 44
Módulos
Todos los lenguajes de programación vienen con una biblioteca
estándar de funciones diseñadas para facilitar el trabajo del
programador.
Algunas de estas funciones están integradas directamente en el
”núcleo” de Python (como print, input, range, etc.).
Otras funciones más especializadas se almacenan en una serie de
archivos llamados ”módulos”, a los cuales Python puede acceder
mediante el uso de la declaración import.
Ejemplos de Importación
import random
import time
Daniel Rambaut Funciones en python March 15, 2024 37 / 44
Módulos en Python
En un Mac, puedes ver estos archivos aquı́:
/Library/Frameworks/Python.framework/Versions/3.2/lib/pytho
Para ver información sobre un módulo, puedes hacer lo siguiente
en IDLE:
import modulename
help(modulename)
Daniel Rambaut Funciones en python March 15, 2024 38 / 44
Módulos
La declaración import le dice a Python que cargue las funciones
que existen dentro de un módulo especı́fico en la memoria y las
haga disponibles en tu código.
Debido a que no ves el funcionamiento interno de una función
dentro de un módulo, a veces las llamamos ”cajas negras”.
Una ”caja negra” describe un mecanismo que acepta una entrada,
realiza una operación que no puede ser vista utilizando esa
entrada, y produce algún tipo de salida.
Daniel Rambaut Funciones en python March 15, 2024 39 / 44
Funciones en Módulos
Llamamos a funciones que existen dentro de un módulo usando la
”notación de punto” para indicarle a Python que ejecute una
función que existe en ese módulo.
Ejemplo
num = random.randint(1,5)
Daniel Rambaut Funciones en python March 15, 2024 40 / 44
Listando Funciones en un Módulo
Puedes listar las funciones que existen en un módulo particular
usando la función help().
La función help() toma un argumento (una cadena que
representa el nombre del módulo) y devuelve el manual de usuario
para ese módulo.
Daniel Rambaut Funciones en python March 15, 2024 41 / 44
Creando Tus Propios Módulos
Puedes crear fácilmente tus propios módulos para llenarlos con tus
funciones. Aquı́ te explicamos cómo:
1 Crea un nuevo script de Python (por ejemplo,
"myfunctions.py").
2 Coloca tus definiciones de funciones en este script.
3 Crea un segundo script de Python (por ejemplo, "myprogram.py").
4 Importa tu módulo de funciones usando la declaración import:
import myfunctions
5 Llama a tus funciones usando la notación de punto:
myfunctions.function1()
myfunctions.dosomethingelse()
Daniel Rambaut Funciones en python March 15, 2024 42 / 44
Creando Tus Propios Módulos
Puedes crear fácilmente tus propios módulos para llenarlos con tus
funciones. Aquı́ te explicamos cómo:
1 Crea un nuevo script de Python (por ejemplo,
"myfunctions.py").
2 Coloca tus definiciones de funciones en este script.
3 Crea un segundo script de Python (por ejemplo, "myprogram.py").
4 Importa tu módulo de funciones usando la declaración import:
import myfunctions
5 Llama a tus funciones usando la notación de punto:
myfunctions.function1()
myfunctions.dosomethingelse()
Daniel Rambaut Funciones en python March 15, 2024 43 / 44
Desafı́o de Programación: Módulo geometry helper
Crea un módulo llamado geometry helper con dos funciones:
1 area of circle(radius): Acepta un argumento (un radio) y
muestra el área del cı́rculo al usuario.
2 perimeter of circle(radius): Acepta un argumento (un radio)
y muestra el perı́metro del cı́rculo al usuario.
Ambas funciones utilizarán el argumento proporcionado para calcular y
mostrar el resultado al usuario.
Daniel Rambaut Funciones en python March 15, 2024 44 / 44