Revista Tecnología

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

Publicado el 17 mayo 2018 por Technodyan

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:

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:

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:

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:

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:

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:

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:

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.


Volver a la Portada de Logo Paperblog