- 1

Fundamentos de Programación con Python para Principiantes
02:04 - 2

Instalación y Uso Básico de Python en Windows y Mac
08:10 - 3

Semántica y Sintaxis en Programación Python
10:15 - 4
Práctica: Te doy la bienvenida a los ejercicios interactivos
00:00 - 5

Manejo de Cadenas y Operaciones Básicas en Python
13:06 - 6

Tipos de Datos en Python: Enteros, Flotantes y Booleanos
07:22 - 7
Dominio de la función `print` en Python: usos y formatos avanzados
04:00 - 8

Operaciones matemáticas avanzadas en Python: módulo, potencia y más
11:01 - 9

Entrada de información y manejo de tipos de datos en Python
04:53
Uso de *args y **kwargs en funciones de Python
Clase 51 de 63 • Curso de Python
Contenido del curso
- 23

Programación Orientada a Objetos en Python: Clases y Métodos Básicos
14:11 - 24

Gestión de Biblioteca con Programación Orientada a Objetos
18:07 - 25

Herencia y Polimorfismo en Programación Orientada a Objetos
13:57 - 26

Programación Orientada a Objetos: Implementación de Clases y Herencia
13:10 - 27

Polimorfismo en Programación Orientada a Objetos
06:21 - 28

Herencia y Uso de la Función super() en Python
07:28 - 29
Programación Orientada a Objetos: Atributos, Métodos y `super()` en Python
05:06
- 37
Programación Avanzada en Python: POO, Excepciones y Proyectos
01:45 - 38

Escritura de Código Pytónico y Buenas Prácticas en Python
03:58 - 39

Comentarios y Docstrings: Buenas Prácticas en Programación
07:01 - 40

Tiempo de vida y alcance de variables en Python
14:11 - 41

Anotaciones de Tipo en Python para Código Más Legible
13:12 - 42

Validación de Tipos y Manejo de Excepciones en Python
13:05 - 43

Estructuras de Datos Avanzadas en Python: Collection y Enumeraciones
13:15
- 47

Uso de Métodos Mágicos en Python
06:47 - 48
Sobrecarga de Operadores en Python: Personaliza Comportamiento de Clases
04:18 - 49

Ejecutar scripts Python con `if __name__ == '__main__'`
05:42 - 50

Metaprogramación en Python: Métodos `__new__` y `__init__`
03:59 - 51

Uso de *args y **kwargs en funciones de Python
14:32 - 52

Métodos y Atributos Privados y Protegidos en Python
09:26 - 53

Uso de Property en Python: Getter, Setter y Eliminación de Atributos
07:56 - 54

Métodos estáticos y de clase en Python
07:46
¿Qué son los args y kwargs y cómo te ayudan en programación?
En el mundo de la programación, especialmente cuando trabajamos con funciones, nos encontramos con situaciones donde la cantidad de argumentos que vamos a recibir es incierta. Aquí es donde los args y kwargs se convierten en aliados indispensables. Estos mecanismos permiten manejar un número variable de argumentos o parámetros, otorgando flexibilidad y dinamismo a las funciones que creamos.
¿Cómo usar *args para argumentos variables?
*args es una herramienta que se utiliza para recibir un número indefinido de argumentos. En Python, cuando definimos una función y le precedemos de un asterisco *, indicamos que estamos listos para recibir múltiples argumentos.
def sum_numbers(*args):
return sum(args)
# Llamada a la función con diferentes números de argumentos
print(sum_numbers(1, 2, 3, 4, 5)) # Retorna 15
print(sum_numbers(1, 2)) # Retorna 3
print(sum_numbers(7, 8, 9, 10)) # Retorna 34
Consideraciones:
- Los
argsse almacenan en una tupla inmutable. - Este método es ideal cuando no se conoce de antemano la cantidad de argumentos que la función recibirá.
¿Cómo manejar argumentos con **kwargs?
Cuando se requiere trabajar con argumentos que poseen etiquetas (es decir, pares de llave y valor), el método adecuado es **kwargs. Al anteponer dos asteriscos ** a nuestra variable, indicamos que estamos preparados para recibir argumentos con nombre.
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
# Llamada a la función con diferentes argumentos
print_info(name="Carlos", age=30, city="Bogotá")
# Salida:
# name: Carlos
# age: 30
# city: Bogotá
Detalles importantes:
kwargsse almacena como un diccionario.- Ofrece flexibilidad para gestionar múltiples parámetros y modificarlos sin alterar la estructura de la función.
¿Cómo combinar args y kwargs en clases?
En programación orientada a objetos, también es posible emplear args y kwargs, especialmente para ofrecer flexibilidad en la inicialización de clases.
class Empleado:
def __init__(self, name, *skills, **details):
self.name = name
self.skills = skills
self.details = details
def show_info(self):
print(f"Name: {self.name}")
print(f"Skills: {self.skills}")
print(f"Details: {self.details}")
# Creación de un objeto e instancia de la clase
empleado = Empleado("Carlos", "Python", "Java", "C++", age=30, city="Bogotá")
empleado.show_info()
¿Qué es el desempaquetado y cuándo usarlo?
El desempaquetado permite extraer valores de listas o diccionarios y pasarlos a una función sin tener que especificar cada valor individualmente. Esto puede realizarse tanto con args (usando *) como con kwargs (usando **).
def suma(a, b, c):
return a + b + c
# Desempaquetado de lista
valores = [1, 2, 3]
print(suma(*valores)) # Retorna 6
def mostrar_informacion(name, age):
print(f"Name: {name}, Age: {age}")
# Desempaquetado de diccionario
datos = {'name': 'Carlos', 'age': 30}
mostrar_informacion(**datos)
Conclusiones y práctica recomendada
Para llevar a la práctica estos conceptos, te sugerimos crear funciones que puedan recibir listas de precios y descuentos aplicables usando *args y **kwargs. La clave está en discernir cuándo es necesario un enfoque u otro y cómo podemos sacar provecho del dinamismo que ofrecen estos mecanismos.
La programación con args y kwargs no solo ofrece mayor flexibilidad, sino que también mejora la legibilidad y eficiencia de nuestro código. Anímate a continuar explorando estos conceptos y aplicarlos en tus proyectos diarios.