Python logo - Curso de Python desde cero

Funciones en Python

Continuamos viendo la sintaxis básica de Python. En esta ocasión vemos las funciones.

Hola ¿Qué tal? bienvenidos a otra entrega de este curso de programación en python, en el que nos encontramos abordando cuestiones básicas de este lenguaje.

Vimos en el post anterior los tipos de datos, operadores y variables en Python, ahora vamos a ver en este post una estructura fundamental en casi cualquier lenguaje de programación. Estoy hablando de las funciones.

Hasta ahora hemos visto muchas funciones integradas de Python. En esta sección, nos centraremos en las funciones personalizadas. ¿Qué es una función? Antes de comenzar a crear funciones, aprendamos qué es una función y por qué las necesitamos.

¿Qué son las funciones? Definición de una función

Una función es un bloque reutilizable de código o declaraciones de programación diseñadas para realizar una determinada tarea. Para definir o declarar una función, Python proporciona la palabra clave def. La siguiente es la sintaxis para definir una función. El bloque de función de código se ejecuta solo si se llama o invoca la función.

Declarar y llamar a una función

Cuando hacemos una función, la llamamos declarando una función. Cuando empezamos a usarla, lo llamamos llamar o invocar una función. La función se puede declarar con o sin parámetros.

# sintaxis
# Declarar una función
def nombre_funcion():
    códigos
    códigos

# Llamada a una función
nombre_funcion()

Funciones integradas

En Python tenemos muchas funciones integradas. Las funciones integradas están disponibles globalmente para su uso, lo que significa que puede hacer uso de las funciones integradas sin importarlas ni configurarlas. Algunas de las funciones integradas de Python son de las más utilizadas. En la siguiente tabla, verá una tabla exhaustiva de las funciones integradas de Python tomada de la documentación de Python.

  • abs(): Devuelve el valor absoluto de un número.
  • all(): Devuelve True si todos los elementos en un iterable son verdaderos.
  • any(): Devuelve True si algún elemento en un iterable es verdadero.
  • ascii(): Devuelve una representación imprimible de un objeto.
  • bin(): Convierte un número entero a su representación binaria.
  • bool(): Convierte un valor a un booleano.
  • breakpoint(): Inicia un depurador en el código.
  • bytearray(): Crea una matriz de bytes mutable.
  • bytes(): Crea un objeto de bytes inmutable.
  • callable(): Verifica si un objeto es llamable.
  • chr(): Devuelve un carácter Unicode a partir de su código.
  • classmethod(): Transforma un método en un método de clase.
  • compile(): Compila el código fuente en un objeto código o AST.
  • complex(): Crea un número complejo.
  • delattr(): Elimina un atributo de un objeto.
  • dict(): Crea un diccionario, una colección de pares clave-valor.
  • dir(): Devuelve una lista de nombres de atributos de un objeto.
  • divmod(): Devuelve la división entera y el resto.
  • enumerate(): Devuelve una tupla de índice y valor para cada elemento en un iterable.
  • eval(): Evalúa una expresión en forma de cadena de texto.
  • exec(): Ejecuta código Python dinámicamente.
  • exit(): Sale del intérprete Python.
  • filter(): Filtra elementos de un iterable utilizando una función.
  • float(): Convierte un valor a un número de punto flotante.
  • format(): Formatea un valor en una representación de cadena de texto.
  • frozenset(): Crea un conjunto inmutable.
  • getattr(): Obtiene el valor de un atributo de un objeto.
  • globals(): Devuelve el diccionario global actual de símbolos y nombres.
  • hasattr(): Verifica si un objeto tiene un atributo.
  • hash(): Devuelve el valor hash de un objeto.
  • help(): Muestra la documentación de ayuda interactiva.
  • hex(): Convierte un número entero a su representación hexadecimal.
  • id(): Devuelve la identificación única de un objeto.
  • input(): Lee la entrada del usuario desde la consola.
  • int(): Convierte un valor a un entero.
  • isinstance(): Verifica si un objeto es una instancia de una clase.
  • issubclass(): Verifica si una clase es subclase de otra.
  • iter(): Retorna un iterador para un objeto.
  • len(): Devuelve la longitud de un objeto.
  • list(): Crea una lista, una colección ordenada.
  • locals(): Devuelve el diccionario local actual de símbolos y nombres.
  • map(): Aplica una función a cada elemento de un iterable.
  • max(): Devuelve el elemento más grande en un iterable.
  • memoryview(): Devuelve una vista de memoria de un objeto.
  • min(): Devuelve el elemento más pequeño en un iterable.
  • next(): Recupera el próximo elemento de un iterador.
  • object(): La clase base de todos los objetos en Python.
  • oct(): Convierte un número entero a su representación octal.
  • open(): Abre un archivo y devuelve un objeto archivo.
  • ord(): Devuelve el valor Unicode de un carácter.
  • pow(): Calcula una potencia.
  • print(): Imprime un mensaje en la consola.
  • property(): Crea y devuelve una propiedad de un objeto.
  • range(): Devuelve una secuencia de números.
  • repr(): Devuelve la representación imprimible de un objeto.
  • reversed(): Devuelve un iterador de una secuencia en orden inverso.
  • round(): Redondea un número.
  • set(): Crea un conjunto, una colección desordenada de elementos únicos.
  • setattr(): Establece el valor de un atributo de un objeto.
  • slice(): Crea un objeto rebanada para secuencias.
  • sorted(): Devuelve una lista ordenada de un iterable.
  • staticmethod(): Transforma un método en un método estático.
  • str(): Convierte un objeto en una cadena de texto.
  • sum(): Devuelve la suma de elementos en un iterable.
  • super(): Retorna un objeto proxy de la clase padre.
  • tuple(): Crea una tupla, una colección ordenada e inmutable.
  • type(): Devuelve el tipo del objeto.
  • vars(): Devuelve el diccionario __dict__ de un módulo, clase o instancia.
  • zip(): Combina iterables en una secuencia de tuplas.

Función sin parámetros

La función se puede declarar sin parámetros.

Ejemplo:

def generar_nombre_completo():
    nombre = 'Alejandra'
    apellido = 'Gómez'
    espacio = ' '
    nombre_completo = nombre + espacio + apellido
    print(nombre_completo)

generar_nombre_completo() # llamar a una función

def sumar_dos_numeros():
    numero_uno = 2
    numero_dos = 3
    total = numero_uno + numero_dos
    print(total)

sumar_dos_numeros()

Función que devuelve un valor – Parte 1

La función también puede devolver valores, si una función no tiene una declaración de devolución, el valor de la función es None. Reescribamos las funciones anteriores usando return. De ahora en adelante, obtenemos un valor de una función cuando llamamos a la función y la imprimimos.

def generar_nombre_completo ():
    nombre = 'Alejandra'
    apellido = 'Gómez'
    espacio = ' '
    nombre_completo = nombre + espacio + apellido
    return nombre_completo

print(generar_nombre_completo())

def suma_dos_numeros():
    numero_uno = 2
    numero_dos = 3
    total = numero_uno + numero_dos
    return total

print(suma_dos_numeros())

Función con parámetros

En una función podemos pasar diferentes tipos de datos (número, cadena, booleano, lista, tupla, diccionario o conjunto) como parámetro.

  • Parámetro único: si nuestra función toma un parámetro, debemos llamar a nuestra función con un argumento
# sintaxis
# Declarar una función
def nombre_funcion(parámetro):
    códigos
    códigos

# Llamada a la función
 print(nombre_funcion(argumento))

Ejemplo:

def saludos(nombre):
    mensaje = nombre + ', ¡bienvenido al curso de Python para principiantes!'
    return mensaje

print(saludos('Alejandra'))


def sumar_diez(numero):
    diez = 10
    return numero + diez

print(sumar_diez(90))


def numero_cuadrado(num):
    return num * num

print(numero_cuadrado(2))


def area_del_circulo(radio):
    PI = 3.14
    area = PI * radio ** 2
    return area

print(area_del_circulo(10))


def suma_de_numeros(numeros):
    total = 0
    for i in range(numeros + 1):
        total += i
    print(total)
 

suma_de_numeros(10) # 55
suma_de_numeros(100) # 5050
  • Dos parámetros: una función puede o no tener un parámetro o parámetros. Una función también puede tener dos o más parámetros. Si nuestra función toma parámetros, deberíamos llamarla con argumentos. Comprobemos una función con dos parámetros:
# sintaxis
# Declarar una función
def nombre_funcion(parametro1, parametro2):
    códigos
    códigos

# Llamada a la función
print(nombre_funcion(argumento1, argumento2))

Ejemplo:

def generar_nombre_completo (nombre, apellido):
    espacio = ' '
    nombre_completo = nombre + espacio + apellido
    return nombre_completo

print('Nombre completo: ', generar_nombre_completo('Alejandra','Gómez'))


def suma_dos_numeros (num_uno, num_dos):
    suma = num_uno + num_dos
    return suma

print('Suma de dos números: ', suma_dos_numeros(1, 9))


def calcular_edad (ano_actual, ano_nacimiento):
    edad = ano_actual - ano_nacimiento
    return edad

print('Edad: ', calcular_edad(2011, 1919))


def peso_del_objeto (masa, gravedad):
    peso = str(masa * gravedad) + ' N' # primero hay que cambiar el valor a cadena
    return peso

print('Peso de un objeto en Newtons: ', peso_del_objeto(100, 9.81))

Pasar argumentos con clave y valor

Si pasamos los argumentos con clave y valor, el orden de los argumentos no importa.

# sintaxis
# Declarar una función
def nombre_funcion(parametro1, parametro2):
    códigos
    códigos

# Llamada a la función
print(nombre_funcion(parametro1 = 'Juan', parametro2 = 'Nadie')) # el orden de los argumentos no importa aquímetro

Ejemplo:

def imprime_nombre_completo(nombre, apellido):
    espacio = ' '
    nombre_completo = nombre + espacio + apellido
    print(nombre_completo)

imprime_nombre_completo(nombre = 'Alejandra', apellido = 'Gómez')

def sumar_dos_numeros (numero1, numero2):
    total = numero1 + numero2
    print(total)

sumar_dos_numeros(numero2 = 3, numero1 = 2) # El orden no importa

Función que devuelve un valor – Parte 2

Si no devolvemos un valor con una función, entonces nuestra función devuelve None de forma predeterminada. Para devolver un valor con una función usamos la palabra clave return seguida de la variable que estamos devolviendo. Podemos devolver cualquier tipo de tipo de datos de una función.

  • Devolver una cadena: 
def imprimir_nombre(nombre):
    return nombre
print(imprimir_nombre('Alejandra'))

def imprimir_nombre_completo(nombre, apellido):
    espacio = ' '
    nombre_completo = nombre + espacio + apellido
    return nombre_completo
print(imprimir_nombre_completo(nombre='Alejandra', apellido='Gómez'))
  • Devolviendo un número:
def sumar_dos_numeros (num1, num2):
    total = num1 + num2
    return total
print(sumar_dos_numeros(2, 3))

def calcular_edad (ano_actual, ano_nacimiento):
    edad = ano_actual - ano_nacimiento
    return edad;
print('Edad: ', calcular_edad(2014, 1923))
  • Devolver un valor booleano: Ejemplo:
def es_par(numero):
    if numero % 2 == 0:
        print('par')
        return True # return detiene la ejecución de la función, similar a break 
    return False
print(es_par(10)) # True
print(es_par(7)) # False
  • Devolver una lista:
def encontrar_numeros_pares(numero):
    pares = []
    for i in range(numero + 1):
        if i % 2 == 0
            pares.append(i)
    return pares
print(encontrar_numeros_pares(10))

Función con parámetros predeterminados

A veces pasamos valores predeterminados a los parámetros, cuando invocamos la función. Si no pasamos argumentos al llamar a la función, se utilizarán sus valores predeterminados.

# sintaxis
# Declarar una función
def nombre_funcion(parametro = valor):
    códigos
    códigos

# Llamada a la función
nombre_funcion()
nombre_funcion(arg)

Ejemplo:

def generar_nombre_completo (nombre = 'Alejandra', apellido = 'Gómez'):
    espacio = ' '
    nombre_completo = nombre + espacio + apellido
    return nombre_completo

print(generar_nombre_completo())
print(generar_nombre_completo('Charles','Smith'))

def calcular_edad (ano_nacimiento,ano_actual = 2023):
    edad = ano_actual - ano_nacimiento
    return edad;
print('Edad: ', calcular_edad(1947))

def peso_del_objeto (masa, gravedad = 9.81):
    peso = str(masa * gravedad)+ ' N' # primero hay que cambiar el valor a cadena
    return peso
print('Peso de un objeto en Newtons: ', peso_del_objeto(100)) # 9.81 - gravedad media en la superficie de la Tierra
print('Peso de un objeto en Newtons: ', peso_del_objeto(100, 1.62)) # gravedad en la superficie de la Luna

Número arbitrario de argumentos

Si no conocemos la cantidad de argumentos que le pasamos a nuestra función, podemos crear una función que pueda tomar una cantidad arbitraria de argumentos agregando * antes del nombre del parámetro.

# sintaxis
# Declarar una función
def nombre_funcion(*argumentos):
    códigos
    códigos

# Llamada a la función
nombre_funcion(parametro1, parametro2, parametro3,..)

Ejemplo:

def suma_todos_los_numeros(*numeros):
    total = 0
    for num in numeros:
        total += num # igual que total = total + num 
    return total
print(suma_todos_los_numeros(2, 3, 5)) # 10

Número predeterminado y arbitrario de parámetros en funciones

def generar_grupos(equipo,*argumentos):
    print(equipo)
    for i in argumentos:
        print(i)
generar_grupos('Equipo-1','Alejandra','Maiti','Rositi','Fenob')

Función como parámetro de otra función

#Puedes pasar funciones como parámetros
def numero_cuadrado(numero):
    return numero * numero

def hacer_algo(f, x):
    return f(x)
print(hacer_algo(numero_cuadrado, 3)) 

Bueno vamos a dejar este artículo en el punto en el que nos encontramos y ya en el próximo post veremos Las listas en Python. Os digo lo de siempre, os invito a que permanezcáis atentos a la próxima entrega. Hasta entonces.

Scroll al inicio