Funciones en Python
Este artículo explica las funciones en Python.
YouTube Video
Funciones en Python
Las funciones en Python son una característica esencial para definir bloques de código reutilizables, lo que te permite organizar y simplificar tu programa llamándolas según sea necesario. El uso de funciones puede mejorar la legibilidad del código y adherirse al principio DRY (Don't Repeat Yourself, evita escribir el mismo código varias veces).
Definiendo funciones
Las funciones se definen utilizando la palabra clave def. La sintaxis básica es la siguiente:.
1def function_name(arg1, arg2, ..., argN):
2 """docstring (A brief description of the function)"""
3 processing
4 return return_valuePor ejemplo, para definir una función que sume dos números, escribirías:.
1def add(x, y):
2 """A function that adds two numbers and returns the result"""
3 return x + yLlamando a funciones
Una función definida puede ser llamada y utilizada de la siguiente manera:.
1result = add(3, 4)
2print(result) # Output: 7Componentes de una función
-
Nombre de la función
- El nombre de la función, utilizado al llamarla.
-
Argumentos (Parámetros)
- Los nombres de las variables que reciben los datos pasados en el momento de la llamada. Puedes definir cero o más argumentos.
-
Cadena de documentación (Docstring)
- Una cadena que describe el propósito y uso de la función. Opcional.
-
Cuerpo de la función
- Un bloque sangrado donde se escriben las instrucciones que ejecuta la función.
-
Valor de retorno
- El valor que se devuelve al llamador usando la sentencia
return. Si se omitereturn,Nonese devuelve por defecto.
- El valor que se devuelve al llamador usando la sentencia
Tipos de argumentos
En Python, hay varios tipos de argumentos.
- Argumentos posicionales
- La forma habitual de pasar argumentos a una función.
- Argumentos por defecto
- Asignar valores predeterminados a los argumentos para que puedan ser omitidos al llamar la función.
1def greet(name, message="Hello"):
2 print(f"{message}, {name}")
3
4greet("Alice") # "Hello, Alice"
5greet("Bob", "Good morning") # "Good morning, Bob"- Argumentos de longitud variable
argsrecibe múltiples argumentos posicionales como una tupla, ykwargslos recibe como un diccionario.
1def func(*args, **kwargs):
2 print("args:", args)
3 print("kwargs:", kwargs)
4
5func(1, 2, 3, a=4, b=5)
6# Output:
7# args: (1, 2, 3)
8# kwargs: {'a': 4, 'b': 5}Mediante el uso correcto de funciones, puedes escribir programas en Python de manera más efectiva y eficiente.
Funciones Lambda en Python
En Python, las funciones lambda se utilizan para definir funciones anónimas y concisas. A diferencia de las funciones definidas con la palabra clave def, lambda permite crear funciones cortas de una sola línea. Aquí explicaremos en detalle las funciones lambda en Python.
Conceptos básicos de las funciones lambda
Las funciones lambda, también llamadas funciones anónimas, se utilizan para definir funciones temporales que no tienen nombre, como sugiere el término. La sintaxis básica es la siguiente:.
1lambda arguments: expressionargumentos- Especifica los argumentos de una función. Se pueden especificar múltiples argumentos, separados por comas.
expresión- Una expresión evaluada según los argumentos. El resultado de la expresión se convierte en el valor de retorno de la función.
Por ejemplo, el siguiente código define y ejecuta una función lambda que suma dos números.
1add = lambda x, y: x + y
2print(add(5, 3)) # Output: 8En este ejemplo, lambda x, y: x + y es una función lambda que toma dos argumentos, x y y, y devuelve su suma.
Casos de uso de las funciones lambda
Las funciones lambda son útiles en situaciones donde necesitas definir una función simple en el momento. Son particularmente comunes en los siguientes casos:.
-
Cuando se pasan como argumentos a funciones
- Es útil en funciones de orden superior (funciones que toman otras funciones como argumentos) al pasar funciones cortas y temporales.
-
Cuando se especifican claves para ordenar listas
- Son útiles para especificar criterios de ordenación (claves) en funciones como
sort()osorted().
- Son útiles para especificar criterios de ordenación (claves) en funciones como
Ejemplo de uso en funciones de orden superior
Ejemplos típicos de funciones de orden superior incluyen map(), filter() y reduce(). Estas funciones toman otras funciones como argumentos y las aplican a secuencias como listas.
1numbers = [1, 2, 3, 4, 5]
2squared = list(map(lambda x: x ** 2, numbers))
3print(squared) # Output: [1, 4, 9, 16, 25]En este ejemplo, se pasa una función lambda a la función map() para elevar al cuadrado cada número en una lista.
Ejemplos de cómo usar la ordenación de listas
La función lambda a veces se puede utilizar para especificar una clave personalizada al ordenar una lista. Por ejemplo, el siguiente código ordena una lista de tuplas según el segundo elemento.
1pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
2pairs.sort(key=lambda pair: pair[1])
3print(pairs)
4# Output: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]En este ejemplo, se utiliza una función lambda para ordenar las tuplas según su segundo elemento (una cadena).
filter() y lambda
La función filter() se utiliza para filtrar elementos de una lista (u otro iterable) según una condición dada.
1numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
2even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
3print(even_numbers) # Output: [2, 4, 6, 8]En este ejemplo, se filtran los números pares de una lista para crear una nueva lista.
lambda y reduce()
La función reduce() se utiliza para reducir una lista a un solo valor. Se puede implementar fácilmente utilizando una función lambda.
1from functools import reduce
2
3numbers = [1, 2, 3, 4, 5]
4product = reduce(lambda x, y: x * y, numbers)
5print(product) # Output: 120En este ejemplo, todos los elementos de la lista se multiplican entre sí para obtener un resultado.
Evita usar funciones lambda complejas
La ventaja de las funciones lambda es su brevedad, pero se vuelven más difíciles de leer cuando se utilizan para implementar lógica compleja. Por lo tanto, es apropiado usarlas para operaciones simples que se puedan expresar en una sola línea. Para operaciones complejas, definir una función con def es más legible y fácil de mantener.
Por ejemplo, deberías evitar usar funciones lambda complejas como la que se muestra a continuación.
1# Complex and hard-to-read lambda function
2complex_func = lambda x, y: (x * 2 + y) if x > y else (x + y * 2)En este caso, es mejor usar una función definida con def, como se muestra a continuación.
1def complex_func(x, y):
2 if x > y:
3 return x * 2 + y
4 else:
5 return x + y * 2Conclusión
Las funciones lambda de Python son una herramienta conveniente para definir funciones temporales y cortas. A menudo se utilizan en funciones de orden superior o en operaciones con listas para definir de manera concisa condiciones específicas. Sin embargo, las funciones lambda deben limitarse a tareas simples, y se prefieren las funciones def para lógica compleja.
Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.