<center><a href="https://www.steemimg.com/image/BcrcE"><img src="https://www.steemimg.com/images/2016/09/19/LearnPython009c7.png" alt="LearnPython009c7.png" border="0" /></a></center>
Para las personas que están empezando en python y han visto código hecho en python algo que notarán es que la mayoría del código esta segmentado en bloques de texto, muchos de estos inician con un comando, ```def```.
DEF o defition function (definición/declaración de función), es eso exactamente, y mucho del código en python esta en forma de funciones.
Pero, analicemos en un momento para que nos sirve tener funciones. La forma más simple de ver su funcionalidad es que nos permite separa y agrupar código en conjuntos mas pequeños. Como los párrafos separan texto en una hoja, haciendo que sea más fácil su lectura. También nos sirve para poder decirle al lector que estamos cambiando de idea, y semánticamente podrá también refrescar su pensamiento.
Otras de las ventajas de las funciones es que se pueden re-utilizar, es decir que si tienes un proceso en una función, la puedes usar cuantas veces quieras en tu mismo código. Después de la agrupación y reutilización tenemos también la facilidad de detectar errores, esto hace que cuando estes programando puedas separar, modular tu código y si hay errores, estos sean mas fáciles de manejar.
En la programación las funciones actúan de una forma similar, nombramos una función con una palabra clave en nuestro programa e indicamos que el código dentro de esa función estará relacionado con lo que la palabra clave nos dirá. Veamos el siguiente ejemplo:
```
def sumar():
print(5 + 10)
```
Esta es una función muy sencilla, de solo una linea, donde nos da entender que tiene relación con la operación matemática de una suma. Así vemos como en la primer linea de código podemos dividirlo en 4 elementos: ```def```,```sumar``` , ```()``` y ```:```.
La primera, ya la explicamos, donde definimos la función, después viene la palabra clave, esta puede ser arbitraria, osea que el usuario puede nombrarla como el quiere. Después vemos unos paréntesis, estos paréntesis son muy importante, por que ahí podemos agrupar parámetros.
### Que son parámetros?
Parámetros son opciones las cuales nos pueden ser útiles en nuestro código, y es que algo que las funciones también nos da, es la capacidad de reutilizarse múltiples veces. La forma más fácil de hacer sentido en su reutilización es cuando puedes pasarle a la función estos parámetros. Por ejemplo, si tu función suma como en el ejemplo, este simplemente regresara el mismo resultado, esto es por que los números en la suma no cambian nunca. Sin embargo si tenemos esto:
```
diez=10
veinte=20
recibo_de_luz=25
def sumar(mi_parametro):
print(5 + mi_parametro)
sumar(diez)
15
sumar(veinte)
25
sumar(recibo_de_luz)
30
```
Esto hará que ahora puedas ejecutar la función de ```sumar``` y regresar diferentes resultados, de forma dinámica. Lo que es mas interesante en el ejemplo es que muchas cosas son arbitrarias, incluyendo el nombre de los parámetros. Es decir que puedes tener tus variables llamadas de una forma y el parámetro definido de otra manera sin que haya problemas. Como viste en el ejemplo, usamos diferentes nombres (diez, veinte...) como parámetros y recibieron el mismo trato, aunque en la función, el parámetro lo nombramos **mi_parametro**.
Existen diferentes tipos de parámetros. Veremos algunos tipos de organizar los parámetros en funciones:
### Otros tipos de parámetros
* **Múltiples parámetros**: Cuando se quieren agregar múltiples parámetros, se debe agregar una coma. Ejemplo: ```def MiFuncion(param1, param2)```
* **Ordenes de los parámetros**: En Python, el orden de los parámetros no tiene mucha importancia. Osea que si invocas el primer parámetro después del segundo parámetro en una función multi-parámetro.
* **Listas de parámetros**: Los parámetros no solo pueden ser variables que contengan un valor, estas pueden consistir en listas o series de valores.
* **Recibir diccionario**: En el caso de un diccionario Python si cambia la forma como debes de declarar una función de tipo diccionario. Esta se antepone con asteriscos al parámetro. Ejemplo : ```def MiFuncion(**param_dic):```
Finalmente vamos al último elemento que separamos, los dos puntos, el cual nos dice que la función iniciará, y esta es importante al momento de crear una función. Cabe señalar que también se agrega una indentación después de haber iniciada la función. Esto hará que la función sea valida, recuerda que las indentaciones en el código deben tener el mismo espacio. Así que si tu programa empieza con 4 espacios, cada vez que quieras indentar la siguiente linea debe contener esos 4 espacios. Para el que apenas esta empezando a programar esto puede resultar algo pesado, sin embargo para el que lee el código, esto sera algo rápido de leer y entender.
## Por que usar funciones?
Existe en la programación en Web en Python, específicamente en Django, un debate sobre si usar Funciones o Clases. Aunque después mencionaremos que son las clases y las diferencias en contra de las funciones, también es cierto que muchas veces ambas pueden desempeñar el mismo trabajo, ya que las clases organizan y agrupan el código. Las funciones tienen capacidades mas simples y su propósito más especifico. Una función hace eso exactamente, una función o tareas especificas y singular.
Bitcoin Digital Signature: H7+jTUgVaJt4yLone8TVvYbhJ4DdbB25Cf5xKuHDJHxqaHm4425KYSqKxeiUKkKd3wrdjuafCZnxjK3HyNLLg98=
Bitcoin Address: 1Ddm2TTRTmJZCnaLWb2sybmfaaf4AkfoXH
<hr />
<div class="pull-right"><img src="https://www.steemimg.com/content/images/users/lW9P/av_1470311811.jpg" alt="JZA" /></div><p><strong>About me:</strong><br />Steemer, crypto fan, like to listen to 90s hip hop, and loves to chat about <em>Linux</em> <em>Python</em> and <em>Free software</em>. Runs a local Tech club in sunny Cancun, and enjoys hoping on planes and landing somewhere else.</p>