2016-02-14 1 views
0

Je veux faire des fonctions expédition, mais il n'y a pas de mécanisme de commutation en python 3. J'apprends à utiliser dict à la place comme ci-dessous:A propos des fonctions expédions en python3

def multiply(m,n,o): 
    return m*n*o  
def add(m,n): 
    return m+n 
my_math = { "+":add, 
      "*":multiply} 

Cependant, mes fonctions ont des paramètres différents. Comment transmettre mes paramètres via my_math [op] (...)? Merci ~

Répondre

0

Je pensais que ce serait mieux.

c = [1,2,3] 
def multiply(x, y, z): 
    return x * y * z 
def add(x, y): 
    return x + y 
my_math = { "+":add, 
      "*":multiply} 
print(str(my_math["+"](*c))) 
print(str(my_math["*"](*c))) 

ou une étape de plus:

c = [1,2,3] 
def multiply(*n): 
    return reduce(lambda x, y: x * y, n) 
def add(*n): 
    return sum(n) 
my_math = { "+":add, 
      "*":multiply} 
print(str(my_math["+"](*c))) 
print(str(my_math["*"](*c))) 
0

J'ai essayé de re-concevoir mon code comme suit, et cela devrait fonctionner.

c = [1,2,3] 
def multiply(a): 
    return a[0]*a[1]*a[2] 
def add(b): 
    return b[0]+b[1] 
my_math = { "+":add, 
      "*":multiply} 
print(str(my_math["+"](c))) 
print(str(my_math["*"](c)))