Python lambda方程的运算

Python lambda方程的运算,python,lambda,Python,Lambda,我发现python不喜欢对lambda方程进行运算 y = lambda x: exp(2*x) m = lambda x: 2*y - x 产生以下错误: TypeError: unsupported operand type(s) for *: 'int' and 'function' 我目前正在研究非常长的方程,需要替换很多方程,但Python不允许我对lambda方程进行操作。 在python中有什么方法可以解决这个问题吗 使用创建匿名函数。因此,您需要将其称为一: m = lamb

我发现python不喜欢对lambda方程进行运算

y = lambda x: exp(2*x)
m = lambda x: 2*y - x
产生以下错误:

TypeError: unsupported operand type(s) for *: 'int' and 'function'
我目前正在研究非常长的方程,需要替换很多方程,但Python不允许我对lambda方程进行操作。 在python中有什么方法可以解决这个问题吗

使用创建匿名函数。因此,您需要将其称为一:

m = lambda x: 2*y(x) - x
#                ^^^
请参见下面的演示:

>>> lamb = lambda x: x * 2
>>> lamb
<function <lambda> at 0x0227D108>
>>> lamb(4)
8
>>>
与此相同:

y = lambda x: exp(2*x)
def y(x):
    return exp(2*x)
但是请注意,Python代码的官方样式指南PEP 0008谴责命名lambda并使用它们代替正常函数的做法:

始终使用def语句而不是 将lambda表达式直接绑定到标识符

是的:

def fx:返回2*x

否:

f=λx:2*x

第一种形式表示结果函数对象的名称为 特别是f而不是泛型。这是更多 通常用于回溯和字符串表示。用途 转让声明中的条款消除了lambda的唯一利益 表达式可以在显式def语句上提供,即它可以 嵌入到更大的表达式中


来源:

这里的exp是什么???你认为结果会是什么?如果在第二行中展开y,它会是什么样子?@user3065619请仔细思考它的工作原理:不能使用lambda在第二行中包含表达式,只能使用它包含该表达式的结果。为什么命名匿名函数?使用defstatement@JBernardo-我同意。事实上,PEP 0008谴责这种做法。有关详细信息,请参阅我的编辑。我使用lambda,因为我将集成结果表达式。这些方程真的很长,所以我需要某种方法把它们分开。def函数让人感觉函数有一些重要的属性或贡献,值得它自己命名,但实际上它们只是一个超长方程的片段。