Otra variante en la declaración de una función en Python es la definición de una cantidad variable de parámetros.
Para definir una cantidad variable de parámetros debemos anteceder el caracter asterísco (*) al último parámetro de la función.
Confeccionar una función que reciba entre 2 y n (siendo n = 2,3,4,5,6 etc.) valores enteros, retornar la suma de dichos parámetros.
def sumar(v1,v2,*lista): suma=v1+v2 for x in range(len(lista)): suma=suma+lista[x] return suma # bloque principal print("La suma de 1+2") print(sumar(1,2)) print("La suma de 1+2+3+4") print(sumar(1,2,3,4)) print("La suma de 1+2+3+4+5+6+7+8+9+10") print(sumar(1,2,3,4,5,6,7,8,9,10))
Para este problema definimos tres parámetros en la función,el primeros y el segundo reciben enteros y el tercero recibe una tupla (por ahora pensemos que una tupla es lo mismo que una lista, más adelante veremos sus diferencias):
def sumar(v1,v2,*lista): suma=v1+v2 for x in range(len(lista)): suma=suma+lista[x] return suma
Sumamos los dos primeros valores y luego recorremos la lista y también sumamos sus elementos.
Cuando llamamos a la función sumar podemos hacerlo enviando solo dos parámetros (la lista está vacía en este caso):
print(sumar(1,2))
Podemos llamar la función enviando 4 parámetros, en este caso la lista tiene dos elementos:
print(sumar(1,2,3,4))
Y en general podemos llamar la función enviando cualquier cantidad de enteros:
print(sumar(1,2,3,4,5,6,7,8,9,10))
Puede ser que tengamos una función que recibe una cantidad fija de parámetros y necesitemos llamarla enviando valores que se encuentran en una lista o tupla. La forma más sencilla es anteceder el caracter * al nombre de la variable:
def sumar(v1, v2, v3): return v1 + v2 + v3 li=[2, 4, 5] su=sumar(*li) print(su)
La función 'sumar' tiene 3 parámetro y la llamamos con la sintaxis:
su=sumar(*li)
Con el caracter asterisco estamos haciendo que se descomponga la lista en sus tres elementos:
su=sumar(li[0], li[1], li[2])
ejercicio144.py def cantidad_mayores18(edad1,*edades): cant=0 if edad1>=18: cant=cant+1 for x in range(len(edades)): if edades[x]>=18: cant=cant+1 return cant # bloque principal print("La cantidad de personas mayores a 18 son:", cantidad_mayores18(23,6,8,19,24))