Introducción a las funciones en Python 3

Las funciones en Python 3 son un bloque de código que podemos reutilizar cada vez que lo necesitemos y que se ejecuta solo cuando la llamamos. Recibe 0 o varios parámetros de entrada y sigue una secuencia de sentencias que opcionalmente comunican con el exterior por medio de la sentencia return.

Python dispone de una serie de funciones integradas al lenguaje como por ejemplo input(), len(), count() entre otras, aunque también permite definir nuestras propias funciones para ser utilizadas en nuestros programas.

Ventajas de utilizar funciones

Una de las principales ventajas de las funciones aparte de reducir el código notablemente es su modularización, ya que permite segmentar un programa complejo en una serie de módulos reutilizables facilitando la programación, la lectura y el depurado.

Sus características son las siguientes:

  • Palabra clave reservada def
  • Nombre de la función
  • Parámetros de entrada entre paréntesis (opcional)
  • Cuerpo o bloque de código
  • Sentencia return (opcional)

Sintaxis de las funciones

Para definir una función basta con utilizar la palabra reservada def de la siguiente forma:

1 – Función sin parámetros

# Función sin parámetros ni retorno
def welcome():
    print("Hola")
# Llamada a la función
welcome()

Si no llamamos a la función no se ejecutará.

# Salida
Hola

2 – Función con un parámetro sin return.

# Función con un parametro sin retorno
def user(name):
    print("Hola", name)
# Llamada a la función
user("Jimena")
# Salida
Hola Jimena

3 – Función con varios parámetros y retorno

def multiplication(a, b):
    total = a * b
    return total
# Llamada a la función
# a = 10 y b = 2
multiplication(10, 2)
# Salida
20

Las funciones como hemos podido ver siempre devuelven un valor. La sentencia return devuelve un valor concreto y en el caso que no desees devolver ninguno, la función devuelve el valor predeterminado None.

Un resultado idéntico al anterior ejemplo pero utilizando la sentencia return directamente sería el siguiente:

def multiplication(a, b):
    return a * b
# Llamada a la función
# a = 10 y b = 2
multiplication(10, 2)

Nota

Si una función incluye parámetros, al llamarla debe de incluir el mismo número de parámetros asignados, de lo contrario devolverá un error: missing (x) required positional argument: (x).

Asignar funciones a variables

Una función es un objeto por lo que también se pueden asignar a variables para posteriormente utilizarlas como una función.

Veamos el siguiente ejemplo:

# Definimos la función
def multiplication(a, b):
    return a * b
# La almacenamos en una variable
result = multiplication(2, 10)
# La imprimimos
print("El resultado de 2 * 10 =", result)
# Salida
El resultado de 2 * 10 = 20

Otro punto importante es que las variables definidas dentro de una función, solo existen en el ámbito de dicha función y no se comunican con el exterior.

Comentarios vs Docstrings

Los comentarios en Python sirven para documentar y ayudar a los programadores a comprender e interpretar el código y la funcionalidad del programa. Se utiliza un hashtag # como prefijo y se debe de repetir en cada salto de línea.

# Estas líneas Python las ignora
print("Aquí ya no")

Los docstrings son descripciones que ayudan a comprender el funcionamiento de una función. Un docstring va entre triple comillas ''', puede ser multilínea y deben de situarse al principio de la función.

def sum(a, b):
    '''
Esta función devuelve la suma entre dos
números facilitados por el usuario.
    Args;
        a (int): sumando
        b (int): sumando
    Return:
        result: suma
'''
    result = a + b
    return result
sum(5, 12)

Cuando estás escribiendo un programa de muchas líneas de código con sus respectivas clases y demás , es lógico que no recuerdes dónde está cada docstring, por eso, gracias al método .__doc__ podemos acceder a la descripción indicada en el docstring de la función deseada.

Utilizando el ejemplo anterior imprimiremos el doc de la función definida por nosotros sum():

print(sum.__doc__)
# Salida
Esta función devuelve la suma entre dos
números facilitados por el usuario.
    Args;
        a (int): sumando
        b (int): sumando
    Return:
        result: suma

Nota

Los docstrings se pueden utilizar también fuera de las funciones para documentar más de 3 líneas, como por ejemplo en una clase.

Ejercicio real con funciones

El siguiente código fue parte de un ejercicio en mi aprendizaje con funciones en Python como parte de un examen.

Se trata de una función que recibe cómo entrada las horas trabajadas, las horas extras si las hay y la tarifa por hora, nos devuelve el total a abonar.

Características y lógica

  • Parámetros hrs y rate
  • Horas introducidas por el usuario (hrs)
  • Tarifa introducida por el usuario (rate)
  • Pago normal (normal_pay) * (rate) todo lo que no supere de 40 horas
  • Se restan 40 horas de (hrs) para quedarnos con las horas extras en (extra)
  • Pago por hora extra aumentado en 1.5 sobre el precio de la tarifa en (extra)
  • Suma entre horas normales y las extras en (payroll)
# Función que calcula hora/tarifa
def computepay(hrs, rate):
    if hrs > 40:
        normal_pay = 40 * rate
        extra = (hrs - 40) * (rate * 1.5)
        payroll = normal_pay + extra
    else:
        payroll = hrs * rate
    return payroll

# Entrada de datos por el usuario
hrs = float(input("Horas trabajadas: "))
rate = float(input("Precio por hora: "))

# Llamada a la función
pay = computepay(hrs, rate)

# Imprimir en pantalla
print("Nómina a abonar:", pay)

Puedes utilizar este código y realizar pruebas e incluso, si quieres modificarlo y aumentar su complejidad por ejemplo con try/except o bucles, lo hagas libremente.

Conclusión

En Python como en otros lenguajes de programación existen diferentes tipos de funciones pero en este artículo, hemos abordado las definidas por el usuario sin complejidades y de un modo introductorio para que puedas definir tus primeras funciones con lo básico que deberías de saber.

Para saber más sobre las funciones integradas por Python puedes hacerlo desde su documentación.

Sigue el tutorial

Expresiones Lambda en Python 3

¿Te ha parecido útil?