Python logo

Introducción a Python: Definición y uso de funciones

Conoce mi nuevo proyecto: Tutoriales de programación en Programador Plus

Este post es parte del Curso de introducción a Python 3:

  1. Introducción a Python: Porque programar con Python
  2. Instalación de Python 3 y IDLE
  3. Primer programa: “Hola Mundo”
  4. Tipos de datos en Python
  5. Asignación y uso de variables
  6. Valores booleanos
  7. Colecciones de datos en Python: Listas y Tuplas
  8. Condicionales: If, else, elif
  9. Ciclos en Python
  10. Definición y uso de funciones en Python
  11. Importación y uso de módulos en Python
  12. Uso de strings en Python

Introducción

En programación, una función es una porción de código que podemos reutilizar bajo un nombre predefinido.

A lo largo de este curso hemos trabajado con varias funciones preestablecidas de Python, como len(), range(), type(), int() y str().

Al leer código, puedes identificar rápidamente una función porque el nombre de la función es seguido por parentesis, ya sea vacíos o con algún argumento.

El proposito de las funciones es hacer más sencilla la estructura, al permitirte reutilizar código rápidamente sin copiar y pegar, así como también facilitar la lectura del mismo, al tener nombres descriptivos y también, facilitar la solución de problemas y la escritura del código, al no tener que preocuparte por como funciona el código encapsulado dentro de la función, sólo por el valor que regrese.

Funciones en Python

Definición de funciones

En Python podemos definir nuestras propias funciones con la palabra def, usando la sintaxis:

def mi_funcion():
    codigo_de_la_funcion

Los nombres de funciones siguen las mismas reglas que las variables, el código en su interior debe ir indentado y no existe un límite de cuantas líneas, condicionales o ciclos podamos añadir en su interior.

En Python las funciones pueden, o no, recibir argumentos con los que trabajar, así como pueden o no, regresar un valor.

Para poder utilizar una función en Python, es necesario invocarla después de haberla definido. Esto lo hacemos escribiendo su nombre seguido de parentesis.

A continuación tienes un ejemplo de una función simple que no recibe ni regresa ningun valor:

https://gist.github.com/Nxz02/2358386336ea8cac8e4e3fe055247d94

Salida:

Hola!
Bienvenido a Python

Las funciones que no reciben ni regresan ningun valor son muy utiles para reutilizar código que no requiera interactuar con otras partes del programa pero que tengamos que implementar varias veces o que sea muy largo y dificulte la legibilidad del programa.

Funciones que reciben valores

Las funciones que reciben valores nos permiten modificar el resultado de la función en base a los valores con los que tengamos que trabajar en ese momento.

Su sintáxis es la siguiente:

def mi_funcion(argumento_1, argumento_2, ... , argumento_N):
    codigo_de_la_funcion

Donde argumentos_1, argumento_2, ..., argumento_N es el valor o valores que recibe la función.

Un ejemplo es la siguiente función que indica si un número es par:

https://gist.github.com/Nxz02/bdfa90c01b689056ddb16dae2317cf9e

La función anterior en ejecución:

En la función de arriba la variable numero que recibe la función reemplaza su valor por cualquiera que le especifiquemos entre parentesis a la función al momento de invocarla. Puedes pensar en los argumentos como comodines que varian su valor en función de los valores que pasemos.

Es importante destacar que la función no modifica la variable que le estamos pasando, ya que genera una copia temporal que existe sólo mientras se ejecuta la función, copia sobre la cual aplica las operaciones que le indiquemos. Esta copia temporal que sólo existe en el marco de ejecución de la función es llamada variable local.

Lo anterior se puede comprobar con el siguiente código:

https://gist.github.com/Nxz02/f05d9e1c0b510db796714eb1d9c8616d

Función en ejecución:

Dentro del cuerpo de la función realizamos una asignación a la variable number en la línea 4; esta variable reemplaza su valor en el cuerpo de la función por la variable numero cuando es invocada, pero como las funciones solo trabajan con variables locales, la variable original no se ve afectada.

Esto sólo ocurre cuando estamos trabajando con variables, pues las listas si se ven afectadas por lo que ocurra dentro de la función, como ocurre con la siguiente función:

https://gist.github.com/Nxz02/d3eeca1a8ca68c40fa8611b06b525e6f

En ejecución:

Es posible modificar variables dentro de una función importandolas en el cuerpo de esta precedidas por la palabra global, sin embargo, no es una práctica recomendada, ya que esta puede alterar la forma en que funciona el programa al no haber una certeza de cual será el valor de la variable global.

El uso de una variable global en una función requiere que la función haya sido declarada previamente fuera de la función.

Por ejemplo:

https://gist.github.com/Nxz02/113404cf543a8e24078bf10c41f7488f

Función en ejecución:

Reitero, el uso de las variables globales no es recomendado y siempre debes analizar que alternativas existen antes de implementarlas en tus funciones.

Funciones que regresan valores

Las funciones también pueden regresar valores que pueden ser almacenados en una variable para ser reutilizados después.

La sintaxis es la siguiente:

def mi_funcion(argumento):
    codigo_de_la_funcion
    return valor

Previamente ya hemos utilizado funciones que regresan un valor, como es el caso de int(), que recibe un dato y regresa un equivalente entero, o len(), que recibe una lista o tupla y regresa un entero indicando su largo.

Por ejemplo, la siguiente función que nos permite obtener la suma de dos numeros:

https://gist.github.com/Nxz02/9039d474b9058644f03b5406aa9a1b55

Un ejemplo más completo puede verse en esta versión del algoritmo de Euclides, que regresa el máximo comun divisor de dos números cualesquiera, tomado de Algoritmo de Euclides en Python:

https://gist.github.com/anonymous/1695cbd18cb9c18b8f8d4a6bbdb264b6

En ejecución:

Podemos regresar cualquier tipo de valor en nuestra función, o incluso multiples valores, si los agrupamos en una lista o una tupla.

Conclusión

Las funciones son elementos muy importantes al programar con Python. No sólo nos permiten encapsular y reutilizar código de manera indefinida, si no que facilitan su lectura acortando la cantidad de líneas a leer y contando con nombres descriptivos para saber rápidamente que es lo que hacen.

En Python se recomienda encapsular en funciones el código que se repita constantemente y aquel que no sea fácil de descifrar o sea muy complejo. Es una buena práctica además, el definir tus funciones al principio del programa, y colocar comentarios que expliquen como funcionan, que valores reciben y que valores regresan.

En la siguiente entrada revisaremos como importar modulos para agregar funciones más complejas a nuestros programas.

Noé Reyes Guerra

Soy un jóven aficionado a la tecnología, felíz usuario de Linux, Firefox y Android, partidario del software libre.

12 comentarios en “Introducción a Python: Definición y uso de funciones”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.