2016-06-14 76 views
3

我有这样的代码,其中sympy函数传递到列表:匿名sympy表达

if name == "sqrt": 
     func.append(sympy.sqrt) 
    elif name == "abs": 
     funcs.append(sympy.Abs) 
    elif name == "sin": 
     funcs.append(sympy.sin) 
    elif name == "cos": 
     funcs.append(sympy.cos) 
    elif name == "tan": 
     funcs.append(sympy.tan) 
    elif name == "exp": 
     funcs.append(sympy.exp) 

等。我需要替换(我知道这是不正确的语法)sympy.exp(x)sympy.Min(1, sympy.exp(x))。我怎么能这样做,使参数是隐含的,我可以将它添加到列表中,就像使用内置函数一样?

+0

所有这些情况下,'name'是一样的功能可以通过'funcs.append(GETATTR(sympy,名))' – Kundor

回答

0

使用lambda表达式:funcs.append(lambda x: sympy.Min(1, sympy.exp(x)))

+1

这就是我想覆盖,但没有按这不符合象征性的东西?像印刷和其他。 –

+0

Mmm,'type((lambda x:sympy.Min(1,sympy.exp(x)))(1))'''class'sympy.core.numbers.One'>' - 那不好吗?不太熟悉sympy。 –

+1

您可以使用'sympy.Lambda(x,sympy.Min(1,sympy.exp(x))'创建一个符号lambda。 – asmeurer