Una
función es un fragmento de código con un nombre asociado que realiza una serie
de tareas y devuelve un valor. A los fragmentos de código que
tienen un nombre asociado y no devuelven valores se les suele llamar procedimientos. En Python no
existen los procedimientos, ya que cuando el programador no especifica un valor
de retorno la función devuelve el valor None (nada), equivalente al null de Java.
Además de ayudarnos a programar y
depurar dividiendo el programa en partes las funciones también permiten
reutilizar código. En Python las funciones se declaran de la siguiente forma:
def mi_funcion(param1,
param2):
print param1
print param2
Es decir, la palabra clave def seguida del nombre de la función y entre paréntesis
los argumentos separados por comas. A continuación, en otra línea, indentado y
después de los dos puntos tendríamos las líneas de código que conforman el
código a ejecutar por la función.

es importante aclarar que al declarar la función lo único que hacemos es
asociar un nombre al fragmento de código que conforma la función,
de forma que podamos ejecutar dicho código más tarde referenciándolo
por su nombre. Es decir, a la hora de escribir estas líneas no se
ejecuta la función. Para llamar a la función (ejecutar su código) se
escribiría:
mi_funcion(“hola”, 2)
Sin embargo, también es posible
modificar el orden de los parámetros si indicamos el nombre del parámetro al
que asociar el valor a la hora de llamar a la función:

El número de valores que se pasan
como parámetro al llamar a la función tiene que coincidir con el número de
parámetros que la función acepta según la declaración de la función. En caso
contrario Python se quejará:

También es posible, definir funciones con un número variable de
argumentos, o bien asignar valores por defecto a los parámetros
para el caso de que no se indique ningún valor para ese parámetro al llamar a
la función.
Los valores por defecto para los
parámetros se definen situando un signo igual después del nombre del parámetro
y a continuación el valor por defecto

En el ejemplo anterior si no indicamos
un valor para el segundo parámetro se imprimirá una sola vez la cadena que le
pasamos como primer parámetro.
Algo que diferencia en cierto
modo las funciones en el mundo de la programación, es que no sólo realizan una
operación con sus entradas, sino que también parten de los siguientes
principios:
- El principio de reusabilidad,
que nos dice que, si por ejemplo tenemos un fragmento de código usado en muchos
sitios, la mejor solución sería pasarlo a una función. Esto nos evitaría tener
código repetido, y que modificarlo fuera más fácil, ya que bastaría con cambiar
la función una vez.
-
Y el principio de modularidad,
que defiende que en vez de escribir largos trozos de código, es mejor crear
módulos o funciones que agrupen ciertos fragmentos de código en funcionalidades
específicas, haciendo que el código resultante sea más fácil de leer.