Curso Python V – Funciones del usuario
Añadir funciones
Hasta ahora las funciones que hemos visto son funciones que ya están definidas, es decir, que alguien programó y nosotros usamos, pero es posible crear funciones propias que hagan lo que nosotros queramos, la definición de una función en la siguiente.
def NOMBRE (LISTA PARÁMETROS): SENTENCIAS
Donde def es la palabra reservada para declarar funciones, NOMBRE es el identificador de nuestra función y cumple las mismas reglas que las nombres de variables. LISTA PARÁMETROS son los datos que necesita nuestra función que puede ser ninguno, uno o varios. Por último SENTENCIAS es el código de nuestra función.
Veamos un ejemplo, supongamos que queremos una función que imprima una nueva linea, es decir, que haga un salto de línea. Podríamos hacer lo siguiente.
def nueva_linea(): print
La sentencia print si no se le pasa ningún parámetro simplemente deja una línea en blanco. Vamos a verlo.
def nueva_linea(): print print "Hola" nueva_linea() print "Mundo"
Obtenemos lo siguiente.
Hola Mundo
El programa anterior es equivalente a escribir
print "Hola" print print "Mundo"
Ya que lo que hace es sustituir el nombre de nuestra función por su contenido, pero supongamos que queremos dejar 3 líneas en blanco. Podríamos hacerlo así
print "Hola" print print print print "Mundo"
Pero si lo vas a usar muchas veces un salto de tres líneas, mejor definir una función que lo haga en una sola.
def tres_lineas(): print print print print "Hola" tres_lineas() print "Mundo"
O incluso podríamos usar nuestra función nueva línea para hacerlo.
def nueva_linea(): print def tres_lineas(): nueva_linea() nueva_linea() nueva_linea() print "Hola" tres_lineas() print "Mundo"
Vamos a hacer un recorrido de este programa, la primera sentencia imprime la palabra Hola. La segunda sentencia llama a la función tres_lineas() así que ahora se va a ejecutar su contenido, la primera línea de esta función es nueva_linea() así que se va a esta y ejecuta lo que hay dentro en este caso la sentencia print, cuando termina de ejecutar lo que hay dentro vuelve a donde lo dejó, es decir, sigue con la siguiente sentencia de tres_lineas() que vuelve a llamar a nueva_linea() y así hasta que termina, cuando no quedan mas sentencias en tres_lineas() vuelve a donde fue llamada, es decir, que sigue con la sentencia print «Mundo».
Como ejercicio prueba a escribir una función que deje nueve líneas en blanco haciendo uso de tres_lineas().
Las funciones deben declararse antes de usarse, es decir, antes de poder usar tres_lineas() debe haber sido declarada en el programa, si se declara después dará error.
Parámetros
Como vimos al principio a las funciones se les puede pasar parámetros, de hecho las funciones que hemos visto en anteriores entregas recibían parámetros como id(). Los parámetros son datos que recibe nuestra función con los que puede trabajar. Veamos un ejemplo.
def saludar(nombre): print "Hola " + nombre saludar("Adrian") saludar("Pedro")
nos dará como salida:
Hola Adrian Hola Pedro
Nuestra función recibe un parámetro llamado nombre que podemos usar dentro de nuestra función, en nuestro caso la unimos a la cadena «Hola » y la imprimimos en pantalla.
Podemos hacer que nuestras funciones tengan más de un parámetro, puede tener tantos como queremos solo debemos separarlos por comas.
def imprime_suma(num1, num2): print num1 + num2 imprime_suma(5, 4) imptime_suma(4.2, 7)
Como vemos nuestra función recibe dos parámetros e imprime el resultado de la suma.
Retorno de valores
Hasta ahora hemos visto funciones que hacen algo concreto como imprimir un mensaje en pantalla o la suma de dos números, pero ¿Y si queremos almacenar el resultado de la suma en una variable?
Para ello usaremos una nueva palabra reservada return. Se encarga de retornar un valor, veamos un ejemplo.
def suma(num1, num2): suma = num1 + num2 return suma
Esto hace que la función devuelva el resultado de la suma, se podría poner en una sola sentencia, ahorrándonos la variable suma.
def suma(num1, num2): return num1 + num2
Ahora podríamos usarla de la siguiente manera.
mi_suma = suma(num1, num2) print mi_suma
La función devolvería el valor de la sentencia return y con el podemos hacer lo que queramos, en nuestro caso almacenarlo en la variable mi_suma.
Una función puede tener más de una sentencia return, pero debes saber que cuando se alcanza una sentencia return la función termina de ejecutarse y devuelve el control al programa. Lo veremos mejor cuando estudiemos los condicionales.
Hola, excelente curso, felicidades.
Una manera de escribir la función que deja líneas en blanco, sería esta:
def n_lineas(n):
a=(n+1)*»\n»
return a
print «1», n_lineas(1), «2»
que me vino a la mente al leer la parte de operaciones.