Solución:
En Python, podemos pasar una cantidad desconocida de argumentos a la función usando la notación de asterisco.
Intentemos crear una función sum_up()
con un número desconocido de argumentos.
def sum_up(*args):
s = 0
for i in args:
s += i
return s
Como puede ver, un argumento con un asterisco antes recopilará todos los argumentos dados a esta función dentro de una tupla llamada args
.
Podemos llamar a esta función de esa manera:
sum_up(5, 4, 6) # Gives 15
Pero si queremos resumir elementos de una lista y necesitamos pasarlos a la función como argumentos …
Podemos probar lo siguiente:
l = [5, 4, 6]
sum_up(l)
Esto no dará el efecto que necesitamos: args
de sum_up
se vera como ([5, 4, 6],)
. Para hacer lo que queremos, necesitamos poner un asterisco antes del argumento que estamos pasando:
sum_up(*l) # Becomes sum_up(5, 4, 6)
Todo lo que necesita hacer es recopilar todos los argumentos que desea pasar en una lista y luego poner un asterisco antes de que esta lista pase como argumento dentro de una llamada:
args = [service ['good '] , tip ['average']]
ctrl.Rule(*args)