Funciones - css-umar/Programacion GitHub Wiki
- Las funciones agrupan algoritmos (expresiones y sentencias).
- Sólo se ejecutan cuando son llamadas, es decir, cuando se hace una referencia a ella.
- Para llamar una función, simplemente se le llama por su nombre.
- Cuando una función, haga un retorno de datos, estos, pueden ser asignadaos a una variable.
- En Python se define una función mediante la instrucción def.
Sintaxis para función sin parámetros
def nombre_funcion(): expresion_1 expresion_2 expresion_3 expresion_n
Sintaxis para función con parámetros
def nombre_funcion(parametro_1, parametro_2,...,parametro_3): expresion_1 expresion_2 expresion_3 expresion_n return expresion
_Los parametro son variables(locales) que pueden ser utilizados dentro de la misma función.
Parámetros: Son las variables listadas entre paréntesis en la definición de la función.
Argumento: Es el valor que se envía a la función cuando se llama.
"""
Esta función solamente tiene la expresión print "¿Qué pex?" y no requiere de parámetros
"""
def saludo(): # saludo es el nombre de la función
print "¿Qué pex?" # Las expresiones irán identadas por cuatro espacios
"""
Las funciones sólo se ejecutan cuando son llamadas, es decir, cuando se hace una referencia a ella
"""
saludo() # Con esta expresión se está llamando a la función saludo, la cual no requiere parámetros.
¿Qué pex?
"""
Esta función hace un retorno de datos.
La instrucción "return" sirve para indicar que devuelva datos, en este caso, la frase "¿Qué pex?"
"""
def saludo2():
return "¿Qué pex?"
hola = saludo2() # En la variable hola se guarda los datos que devuelve la función saludo2()
print hola # Aquí se está mostrando los datos que contiene la variable hola
¿Qué pex?
"""
Esta función realiza la suma de dos numeros, para lo cual requiere de los parámetros a y b;
donde a y b, son los dos numeros a sumar; la suma de a más b se almancena en la variable resultado,
la cual posteriormente se regresa al usuario mediante la instrucción return.
"""
def suma(a,b):
resultado = a + b # "resultado" es una variable local para uso exclusivo de la función
return resultado
"""
Al llamar a una función que requiere de parámetros, si el usuario no se los proporciona,
Python mostrará un error.
"""
suma()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-58-3d1cf805e4d2> in <module>()
3 Python mostrará un error.
4 """
----> 5 suma()
TypeError: suma() takes exactly 2 arguments (0 given)
"""
Con esta expresión se está llamando a la función suma, los argumentos para los parámetros a y b
son 2 y 2 respectivamente.
Al llamar a una función, siempre se le deben pasar sus argumentos en el mismo orden
en el que fueron definidos los parámetros.
"""
suma(2,2)
4
# Otra forma
a, b = 5, 5
suma(a,b)
10
"""
Aquí los datos que devuelve la función suma se almacena en la variable respuesta
"""
respuesta = suma(a,b)
print respuesta # Aqui se muestra lo que contiene la variable respuesta
10
"""
No se puede acceder a variables locales, fuera de la función.
"""
def division(dividendo, divisor):
cociente = dividendo/divisor # cociente es una variable local y es de uso exclusivo de la función
return cociente
dividendo, divisor = 10, 2
division(dividendo, divisor) # se llama a la función división
5
"""
Cuando se intenta acceder a una variable local fuera de la función, python mostrará un error
"""
print cociente
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-65-63bf85abac24> in <module>()
2 Cuando se intenta acceder a una variable local fuera de la función, python mostrará un error
3 """
----> 4 print cociente
NameError: name 'cociente' is not defined
En Python se puede asignar argumentos por defecto a los parámetros de las funciones.
def potenciacion(base, exponente=2):
return base**exponente # Recuerda que para elevar un número a una potencia se usa **
potenciacion(2)
4
"""
También es posible llamar a una función, pasándole los argumentos esperados, como pares
de claves=valor:
"""
potenciacion(base=2, exponente=3)
8
"""
Si se transfieren los argumentos por medio de pares claves=valor, no importa el orden en el que
se hace.
"""
potenciacion(exponente=4,base=2)
16
Es posible que una función espere recibir un número arbitrario de parámetros. Estos parámetros, llegarán a la función en forma de tupla.
Sintaxis para función con parámetros arbitrarios
def nombre_funcion(argumento_1, argumento_2,...,*argumento_arbitrario): expresion_1 expresion_2 expresion_3 expresion_n return expresion
Los parámetros arbitrarios, se anteceden con un asterisco y siempre deben suceder a los fijos.
"""
La función func requiere de parámetros fijos y de arbitrarios, con print se está accediendo
a los parámetros fijos. Mientras que con el ciclo for se acceden a los parámetros arbitrarios
"""
def func(parametro_fijo, *parametro_arbitrario):
print parametro_fijo
for i in parametro_arbitrario:
print i
# Imprime el argumento fijo y arbitrarios
func("Parametro fijo","Parametro arbitrario 1","...","Parametro arbitrario n")
Parametro fijo
Parametro arbitrario 1
...
Parametro arbitrario n
"""
Ahora con números y cadena de texto
"""
func(1,"dos",3,4,5,6,7,8,"nueve")
1
dos
3
4
5
6
7
8
nueve
"""
Otra forma es utilizar listas, como en el siguiente ejemplo
"""
def funcion(parametro_fijo, lista):
print parametro_fijo
for i in lista:
print i
lista_argumentos = [2,3,4,5,6,7,8,9]
funcion(1,lista_argumentos)
1
2
3
4
5
6
7
8
9
funcion(1,[2,3,4,5,6,7,8,9])
1
2
3
4
5
6
7
8
9
También es posible empaquetar los argumentos en una lista o tupla. Como ejemplo vamos a retomar la función potenciacion que previamente ya fue creada. Esta funcion requiere de dos parametro, la base y el exponente.
"""
Para empaquetar los argumentos vamos a utilizar una lista, a la cual vamos a llamar datos:
"""
datos = [2,3] # Lista con los argumentos
"""
Para desempaquetar los argumentos en la función, al nombre de la lista se le debe
anteponer un asterisco(*)
"""
potenciacion(*datos)
8
"""
Comparando los métodos...
Empaquetado de argumentos y Clave=Valor, ambos métodos arrojan resultados similares
"""
potenciacion(base=2, exponente=3)
8
"""
Cuando los argumentos están contenidos en un diccionario, se deberán pasar a la función con el
nombre del diccionario precedido de dos asteriscos (**).
"""
datos_dic = {"base":2, "exponente":3} # Diccionario con los argumentos
potenciacion(**datos_dic)
8
Caracteristicas de la función lambda:
- Puede tomar varios parámetros, pero solamente puede regresar una expresión o resultado.
- Se puden usar dentro de otras funciones.
- No es necesario declarar un return, siempre devuelven una sola expresión.
- Se usan cuando se requiere una función para un periodo de tiempo corto.
Sintaxis para la función lambda
nombre_funcion = lambda parametro_1, parametro_2,...,parametro_n: expresión
"""
Retomando la función "suma" creada previamente, la cual realiza la suma de dos (a y b) números reales
cualesquiera:
def suma(a,b):
resultado = a + b
return resultado
Utilizando función lambda queda de la forma siguiente...
"""
suma = lambda a, b: a + b
"""
Llamando a la función suma creada con lambda.
"""
suma(2,2)
4