Las funciones en Python son bloques de código reutilizables que realizan una tarea específica. Pueden aceptar argumentos y devolver valores.

Definición de Funciones:

Definimos una función con la palabra clave def, seguida del nombre de la función y paréntesis que pueden contener argumentos.

def saludar(nombre):
    print("Hola, " + nombre + "!")

Llamada a Funciones:

Llamamos a una función utilizando su nombre seguido de paréntesis que contienen los valores de los argumentos.

saludar("Juan") // "Hola Juan"

Argumentos por Defecto:

Podemos asignar valores predeterminados a los argumentos, permitiendo que la función sea llamada con menos argumentos.

def saludar(nombre="Usuario"):
    print("Hola, " + nombre + "!")

Retorno de Valores:

Las funciones pueden devolver valores utilizando la palabra clave return.

def cuadrado(numero):
    return numero ** 2

Argumentos Arbitrarios (*args y **kwargs):

En Python, los argumentos arbitrarios permiten a una función aceptar un número variable de argumentos. Esto proporciona flexibilidad al diseñar funciones que pueden manejar diferentes situaciones.

args - Argumentos Posicionales:

Utilizamos *args para permitir un número variable de argumentos posicionales. Estos son pasados a la función como una tupla.

def suma(*numeros):
    resultado = 0
    for numero in numeros:
        resultado += numero
    return resultado

# Uso de la función
total = suma(1, 2, 3, 4, 5)
print(total)  # Resultado: 15

*kwargs - Argumentos de Palabras Clave:

Utilizamos **kwargs para permitir un número variable de argumentos de palabras clave. Estos son pasados a la función como un diccionario.