Ya hemos visto algunas funciones que aceptan un número variable de argumentos como print() o zip(). Sin embargo, no hemos creado una nosotros mismos. ¿Cómo escribir una función que pueda manejar un número variable de argumentos?
Al imprimir elementos, podemos llamar a la función print() con tantos argumentos como queramos y los imprimirá todos:
print('Hi') # Hi
print('Hi', 'how', 'are', 1) # Hi how are 1
print(1, 2, 3, 8) # 1 2 3 8
Si observamos la firma de la función print() en la documentación oficial de Python, el primer argumento en realidad captura toda la lista de argumentos (no de palabras clave) que se le pasan. Lo mismo ocurre con la función zip:
Podemos definir nuestras propias funciones que acepten un número variable de argumentos con un asterisco *:
def income(*purchases):
total = 0
for purchase in purchases:
total += purchase
return total
print(income(1, 2, 3, 4, 10)) # 20
En este caso, podemos tratar purchases como una lista de números. Podemos acceder a su longitud con len(), podemos iterar sobre los elementos con un bucle for, etc.
Desafío
Implementa una función num_args() que devuelva el número de argumentos que se le pasan.