Funciones de usuario
Funciones¶
En un programa hay cuatro tipos de funciones:
-
las funciones built-in proporcionadas por el propio lenguaje Python:
print("Hola") -
las funciones de la biblioteca estándar. Por ejemplo, para averiguar cual es nuestro sistema operativo, escribimos:
>>> import platform >>> platform.system() Linux -
funciones de bibliotecas de terceros que instalemos en nuestra computadora. Por ejemplo, la biblioteca pygame permite crear juegos 3D
-
funciones creadas por nosotros.
Como crear una función¶
Supongamos que escribimos el siguiente programa:
saludar("Ana")
saludar("Juan")
saludar("Luis")
Lo que muestra
Hola, Ana
Hola, Juan
Hola, Luis
La función saludar debe recibir un texto como argumento y mostrar un saludo. La definimos de la siguiente forma:
| Saludar.py | |
|---|---|
1 2 3 4 5 6 7 | |
La definición de una función tiene dos partes:
-
una línea de cabecera, que comienza con la palabra
def, seguida del nombre de la función y, entre paréntesis, una lista de variables receptoras de argumentos. Esta línea finaliza con dos puntos: -
un cuerpo de sentencias a ejecutar cada vez que se invoca la función. El bloque ha de estar sangrado.
Las funciones deben definirse antes de ser invocadas. En el ejemplo, primero
creamos la función saludar() y posteriormente la llamamos tres veces.
Parámetros¶
Toda función puede recibir argumentos, que almacenará en las variables que definamos entre paréntesis. En el ejemplo anterior, definimos una variable llamada "nombre". Nos limitamos a establecer el nombre de la variable, sin asignarle un valor, ya que la variable está concebida para almacenar el valor recibido.
A las variables destinadas a almacenar los argumentos recibidos por una función, se las llama parámetros. Una función puede definirse con varios parámetros:
| Saludar2.py | |
|---|---|
1 2 3 4 5 6 7 | |
Si no se prevé recibir argumentos, se escriben paréntesis vacíos
def saludar():
print("Hola")
Funciones que devuelven un resultado:¶
Una función puede devolver un resultado
| Perimetro.py | |
|---|---|
1 2 3 4 5 6 7 | |
La sentencia return establece el valor a devolver. Si no va acompañada de nada,
se limita a finalizar la ejecución de la función:
def saludar():
print("Hola")
return
De todas formas, toda función concluye su ejecución al llegar a la última
sentencia, por lo que en este caso, no sería necesaria la sentencia return.
Pero puede ser útil para finalizar anticipadamente:
| NumerosPrimos.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
esto muestra una lista con los números primos menores de 100:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97]
Argumentos por nombre¶
Las funciones se pueden invocar pasando el nombre del parámetro en el caso de algún argumento (o de todos):
| Saludar2.py | |
|---|---|
1 2 3 4 5 6 7 | |
Esto permite escribir los argumentos en un orden diferente del previsto:
saludar(apellido="López", nombre="Ana")
Por lo tanto, una función puede invocarse de tres formas:
- indicando el nombre de todos los parámetros
- con todos los argumentos sin nombre. Se asignan según su posición.
- con algunos argumentos posicionales y otros por nombre
En el tercer caso, los argumentos posicionales han de ir en primer lugar, y corresponderse con los primeros parámetros.
Parámetros opcionales¶
Los argumentos pueden omitirse, si en la definición de la función establecemos un valor por defecto:
| Saludar3.py | |
|---|---|
1 2 3 4 5 6 7 | |
Lo que muestra:
Buenos días, Ana
Hola, Juan
Hola, Iker
Los parámetros obligatorios deben definirse antes que los opcionales.