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()delattr()hash()memoryview()set()
all()dict()help()min()setattr()
any()dir()hex()next()slice()
ascii()divmod()id()object()sorted()
bin()enumerate()input()oct()staticmethod()
bool()eval()int()open()str()
breakpoint()exec()isinstance()ord()sum()
bytearray()filter()issubclass()pow()super()
bytes()float()iter()print()tuple()
callable()format()len()property()type()
chr()frozenset()list()range()vars()
classmethod()getattr()locals()repr()zip()
compile()globals()map()reversed()__import__()
complex()hasattr()max()round()

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