veces una tiene saber repite repetidos repetidas que palabras palabra lista letras funcion frase elementos elemento diccionario cuantas contar conjunto como python dictionary dispatch

python - tiene - ¿Hay alguna manera de almacenar una función en una lista o diccionario para que cuando se llame al índice(o clave) se desactive la función almacenada?



elementos repetidos lista python (2)

Por ejemplo, he intentado cosas como mydict = {''funcList1'': [foo(),bar(),goo()], ''funcList2'': [foo(),goo(),bar()] , que doesn no funciona

¿Hay algún tipo de estructura con este tipo de funcionalidad?

Me doy cuenta de que obviamente podría hacer esto con la misma facilidad con un montón de declaraciones def :

def func1(): foo() bar() goo()

Pero la cantidad de declaraciones que necesito es cada vez más difícil de manejar y difícil de recordar. Sería bueno envolverlos muy bien en un diccionario que podría examinar las claves de vez en cuando.


Las funciones son objetos de primera clase en Python y, por lo tanto, puede enviar utilizando un diccionario. Por ejemplo, si foo y bar son funciones, y dispatcher es un diccionario como tal.

dispatcher = {''foo'': foo, ''bar'': bar}

Tenga en cuenta que los valores son foo y bar que son los objetos de función, y NOT foo() y bar() .

Para llamar a foo , puedes hacer el dispatcher[''foo'']()

EDITAR: si desea ejecutar múltiples funciones almacenadas en una lista, posiblemente pueda hacer algo como esto.

dispatcher = {''foobar'': [foo, bar], ''bazcat'': [baz, cat]} def fire_all(func_list): for f in func_list: f() fire_all(dispatcher[''foobar''])


Puedes hacer algo como esto también:

Deje que foo1() , foo2() , foo3() , ... sean funciones

Definir foo así:

foo = lambda n: eval("foo"+str(n))

Ahora puedes iterar a través de ellos.

for i in range(n): foo(i)()

n es el número de funciones foo definidas. De esta manera, resulta útil si no desea agregar siempre funciones de tipo foo recientemente definidas a una lista.

Editar:

¡¡Importante!!

Por favor, eche un vistazo a this .