在我的代码中,我首先定义了两个lambda函数:
func1 = lambda x: x + 2
func2 = lambda x: x * 2
Run Code Online (Sandbox Code Playgroud)
后来在我的代码中,我想创建一个lambda函数,它添加上面两个lambda函数的结果,但是这个函数必须和上面的函数之一一样.也就是说,我想做这样的事情:
func2 = lambda x: func1(x) + func2(x)
Run Code Online (Sandbox Code Playgroud)
请注意,功能名称func2再次出现.
我知道这很愚蠢,还有其他方法可以达到同样的预期效果.然而,这个例子只是我试图实现的一个非常简化的版本.但是,这不起作用,因为它给我错误:
RecursionError:超出最大递归深度
我认为这是因为func2一直在呼唤自己.有没有办法防止这种情况发生?我无法更改名称func1或func2(请注意,这也意味着我无法创建两个具有不同名称但内容相同的新功能).我试过这样的事
func2Copy = lambda x: func2(x)
func1Copy = lambda x: func1(x)
func2 = lambda x: func1Copy(x) + func2Copy(x)
Run Code Online (Sandbox Code Playgroud)
但看到了同样的错误(如预期的那样).我正在尝试做什么?
你可以使用一些间接
func2 = (lambda f1, f2: lambda x: f1(x) + f2(x))(func1, func2)
Run Code Online (Sandbox Code Playgroud)
那么
>>> func2(1)
5
Run Code Online (Sandbox Code Playgroud)
这有点傻 - 短篇小说是你需要另一个功能.
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |