- 1 - programación y manejo de funciones en Python
- 2 - ¿Qué es una función en Python?
- 3 - Cómo definir una función:
- 4 - Envío de valores
- 5 - Retorno de valores
- 6 - Retornando valores con condiciones
- 7 - argumento y parámetros en funciones Python
- 8 - Las funciones retornando funciones
- 9 - Funciones recursivas
- 10 - Excepciones en funciones
- 11 - Aserciones en funciones
- 12 - Conclusión
programación y manejo de funciones en Python
Vamos a aprender a trabajar con las funciones en Python, lo primero que vamos a hacer es ver como las declaramos y después como enviar valores a esas funciones para que realicen tareas específicas a través de los parámetros. Además trabajaremos como poder retornar los valores de las funciones y controlar el flujo de nuestro programa.
¿Qué es una función en Python?
La función es un conjuto de códigos que se ejecutan cuando se le llama y realiza una determinada acción. Las funci0ones nos permiten organizar nuestro código, reutilizarlo y hacerlo más legible siendo más compacto. Dando diferentes valores de entrada a la función puede reutilizarse muchas veces y tomar la salida basada en los valores dados. Si se definen correctamente, el programa puede ser más flexible.
Cómo definir una función:
Para definir una función en Python, utilizamos la palabra clave def, seguida del nombre de la función y paréntesis que pueden contener parámetros. El cuerpo de la función se escribe con una sangría.
Sintaxis:
def nombre_de_la_funcion(parametro1, parametro2,...):
# Cuerpo de la función
# Código que realiza la tarea
return resultado
El nombre de la funcíon se escribe con la palabra clave def, seguido del nombre de la función y paréntesis que pueden contener parámetros y los dos puntos puntos. El cuerpo de la función se escribe con una sangría.
Así como se define un conjunto de códigos de bajo un nombre. Las funciones también las definimos bajo un nombre y luego las llamamos por ese nombre para que se ejecuten.
La llamada a la función se realiza escribiendo el nombre de la función seguido de paréntesis que pueden contener argumentos.
- nombre_de_la_funcion()
def saludar(nombre: str) -> None:
print(f"Hola, {nombre}!")
saludar("Javi") # Llama a la función con el argumento "Javi"
Envío de valores
Una función puede tomar los datos como entrada a través de sus paréntesis, estos valores se llaman parámetros. Los parámetros se declaran en el momento de la definición de la función. En el ejemplo anterior, la función de saludar, podemos cambiar la función para impirmir algo dado por el usuario a través de parámetros. Lo cierto que no tenemos un límite en el número de parámetros que podemos enviar a una función, pero es recomendable no abusar de ellos para mantener la legibilidad del código. Los valores siempre los enviamos de forma ordenada, por ejemplo, si el primer parámetro es un nombre lo que le enviemos sería para el primer parámetro y así sucesivamente. Podríamos dar el valor en diferente orden pero deberíamos especificar el nombre del parámetro al que le estamos dando el valor.
def nombre_edad(a: str, b: int) -> str:
return print(f"Tu nombre es {a} y tienes {b} años.")
nombre_edad("Javi", 30) # Llama a la función con los argumentos "Javi" y 30
Retorno de valores
Las funciones pueden devolver o retornar una salida. La palabra clave que utilizamos para devolver un valor es return. Cuando una función encuentra una declaración de retorno, la función termina su ejecución y devuelve el valor especificado.
Podemos devolver cualquier tipo de dato, como números, cadenas, listas, diccionarios, etc. Si no se especifica una declaración de retorno, la función devolverá None por defecto.
Sintaxis: def fun_return(): Cuerpo de la función return valor_de_retorno
def sumar(a: int, b: int) -> int:
return a + b
Los dos números son los valores que enviamos a la función en el momento de la llamada y el resultado de la suma es el valor que retorna la función. En este caso estamos devolviendo un número entero pero podría ser guardado en una variable.
def sumar(a: int, b: int) -> int:
suma = a + b
return suma
print(sumar(5, 3)) # Salida: 8
Retornando valores con condiciones
Las funciones puden devolver los valores basándose en condiciones. Podemos utilizar declaraciones condicionales dentro de la función para determinar qué valor devolver.
def evaluar_numero(num: int) -> str:
if num > 0:
return "Positivo"
elif num < 0:
return "Negativo"
else:
return "Cero"
print(evaluar_numero(10)) # Salida: Positivo
print(evaluar_numero(-5)) # Salida: Negativo
print(evaluar_numero(0)) # Salida: Cero
argumento y parámetros en funciones Python
Los términos argumento y parámetro a menudo se usan indistintamente, pero tienen significados distintos en el contexto de las funciones en Python.
- Parámetro: Es una variable que se define en la declaración de la función y actúa como un marcador de posición para los valores que se pasarán a la función cuando se llame. Los parámetros se especifican dentro de los paréntesis en la definición de la función.
- Argumento: Es el valor real que se pasa a la función cuando se llama. Los argumentos son los datos que se proporcionan a la función para que pueda realizar su tarea.
def saludar(nombre: str) -> None: # 'nombre' es un parámetro
print(f"Hola, {nombre}!")
saludar("Javi") # 'Javi' es un argumento
Las funciones retornando funciones
Una función peude devolver otra función ya definida dentro de la función.
Sintaxis: def duncion_externa(parametro1): declaraciones def funcion_interna(parametro2): declaraciones return valor
def crear_multiplicador(factor: int) -> callable:
def multiplicar(numero: int) -> int:
return numero * factor
return multiplicar
duplicar = crear_multiplicador(2)
triplicar = crear_multiplicador(3)
print(duplicar(5)) # Salida: 10
print(triplicar(5)) # Salida: 15
En este ejemplo, la función crear_multiplicador devuelve una función multiplicar que multiplica un número por un factor dado. Podemos crear diferentes funciones de multiplicación pasando diferentes factores a crear_multiplicador.
Funciones recursivas
Si una función devuelve la misma función entonces a esto se le llama las funciones recursivas o recursión. El contro se mantiene como una rotación hasta que podamos hacer que cumpla con la condición de rotura declarada.
def factorial(n: int) -> int:
if n == 0:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # Salida: 120
En este ejemplo, la función factorial se llama a sí misma para calcular el factorial de un número. La condición base es cuando n es igual a 0, en cuyo caso devuelve 1.
Excepciones en funciones
Si lso programas en Python termianna con unerror, finalizarán y mostrarán el error por al terminal. Para los programas en Python tenemos la suerte y posibilidad de ser apturados usando algunos objetos que nos permiten manejar las excepciones. Estos objetos son try, except, else y finally.
Sintaxis: try: declaraciones except TipoDeError: declaraciones
Las sentencias que se encuentran dentro del bloque try son las que pueden generar una excepción. Si se produce una excepción, el flujo del programa se transfiere al bloque except, donde podemos manejar el error de manera adecuada.
def dividir(a: int, b: int) -> float:
try:
resultado = a / b
except ZeroDivisionError:
return "Error: División por cero no permitida."
else:
return resultado
print(dividir(10, 2)) # Salida: 5.0
print(dividir(10, 0)) # Salida: Error: División por cero no permitida.
En este ejemplo, la función dividir intenta dividir dos números. Si el segundo número es cero, se captura la excepción ZeroDivisionError y se devuelve un mensaje de error en lugar de que el programa falle.
Aserciones en funciones
En python los errores en lógica del programa pueden ser señalados con declaraciones de aserción. Estos errores de aserción pueden ser capturados con la plabra clave assert. Si la condición evaluada es falsa, se genera una excepción AssertionError.
Sintaxis: expresion assert, argumentos
def calcular_raiz_cuadrada(numero: float) -> float:
assert numero >= 0, "El número debe ser no negativo."
return numero ** 0.5
print(calcular_raiz_cuadrada(16)) # Salida: 4.0
print(calcular_raiz_cuadrada(-4)) # Lanza AssertionError: El número debe ser no negativo.
En este ejemplo, la función calcular_raiz_cuadrada utiliza una aserción para asegurarse de que el número proporcionado sea no negativo antes de calcular su raíz cuadrada. Si se pasa un número negativo, se lanza una excepción AssertionError con un mensaje descriptivo.
Conclusión
Las funciones son una parte fundamental de la programación en Python. Nos permiten organizar nuestro código, reutilizarlo y hacerlo más legible. Aprender a definir, llamar y manejar funciones es esencial para cualquier programador que desee escribir código eficiente y mantenible. Además, el manejo de excepciones y aserciones dentro de las funciones nos permite crear programas más robustos y confiables. Practicar la creación y uso de funciones nos ayudará a mejorar nuestras habilidades de programación en Python.
¿Listo para hacer crecer tu negocio?
Analicemos tu proyecto y definamos la estrategia perfecta para alcanzar tus objetivos
Solicitar consultoría gratuita