2015-03-16 1 views
1

J'ai quelque chose comme un interrupteur, celui donné une option appellera une fonction par exemplepython - pour fonctionner passer argument dans un dictionnaire

#... capture option 
op = getOption() 
#.. capture metric 
mt = getMetric() 

def zipcode(): 
    print "You typed zero.\n" 
def desc(): 
    print "n is a perfect square\n" 
def address(): 
    print "n is an even number\n" 

#call desired option 
options= {0 : zipcode, 
      1 : code, 
      2 : desc, 
      3 : address 
} 

options[op]() 

Je suis en train de passer un paramètre (mt) dans mes les options dict qui appellera une fonction, mais je ne suis pas en mesure de le faire.

si op reçu est 1 et mt est foo, comment l'appel à la fonction droite (code postal) se fera en passant mt comme paramètre?

idéalement: options[op](mt) et définir un paramètre dans la fonction?

Merci

+3

"idéalement: options [op] (mt) et définissant un paramètre dans la fonction" Hé bien oui. Étant donné que vous connaissez la réponse, je ne suis pas sûr de ce que vous demandez. – interjay

+0

mon mauvais, je spécifiais aussi le paramètre dans le dictionnaire comme: 'options = {0: code postal (param1), ..'. Je suis encore en train d'apprendre ce super truc en python! merci quand même –

Répondre

3

Votre code ne sont pas correctement en retrait, ce qui est très important en Python et causerait des erreurs de syntaxe est.

Cependant, ce que vous suggérez fonctionnerait parfaitement.

Considérez ce qui suit:

def multiply(m,n): 
    return n*n 

def add(m,n) 
    return m,n 

my_math = { "+":add, 
      "*":multiply} 

Vous pouvez ensuite appeler comme suit:

>>> print my_math["+"](1,2) 
3 
>>> print my_math["*"](4,5) 
20 
+0

Ha, j'ai compris! Je spécifiais un paramètre dans la fonction de dictionnaire comme 'options = {0: code postal (param1), .. 'ne comprenait toujours pas comment ces appels pythoniques cela fonctionne, mais il bascule :) –

+0

code est maintenant en retrait, vient d'écrire un petit exemple et manquer le dernier rompu avec indentation droite. –