调用将 lambda 函数加在一起的自定义函数时内核重新启动

     2023-03-29     253

关键词:

【中文标题】调用将 lambda 函数加在一起的自定义函数时内核重新启动【英文标题】:Kernel restarts when calling self defined function which adds together lambda functions 【发布时间】:2021-12-25 06:23:06 【问题描述】:

我尝试定义一个将多个 lambda 函数添​​加在一起的函数。 当我调用该函数时,内核崩溃并重新启动,没有更多错误消息。

def add_lambdas(function_list):
    f = lambda x, y: None
    for function in function_list:
        f = lambda x, y: f(x, y) + function(x, y)
    return f

f1 = lambda x, y: x + y
f2 = lambda x, y: x**2 - 2*y

f3 = lambda x, y: f1(x,y) + f2(x,y)
f4 = add_lambdas([f1,f2])

例如,当我调用 f3(2,3) 时一切正常,但当我调用 f4(2,3) 时,内核崩溃并重新启动。对于 f3,我手动添加 f1 和 f2,但对于 f4,我通过函数 add_lambdas() 传递它们。

这是输出:

In[5]: f3(2,3)
Out[5]: 3

In[6]: f4(2,3)

Restarting kernel...

显然我定义的函数有问题,但我不知道它是什么。有什么想法吗?谢谢!

【问题讨论】:

【参考方案1】:

我认为问题在于您将 f 定义为递归函数,我认为这不是您想要的。你可以试试这个:

def add_lambdas(function_list):
    return lambda x, y: sum(f(x, y) for f in function_list)

【讨论】:

【参考方案2】:

您遇到了堆栈溢出。问题是add_lambdas中只有一个变量f和一个变量function。当你写:

f = lambda x, y: f(x, y) + function(x, y)

您只是为变量f 分配了一个新值,但定义中的变量f 也是那个新值。这是堆栈溢出。此外,变量function 将保留列表中的最后一个值。它没有理由复制该值。

如果改为: f = lambda x, y, f=f, function=function: f(x, y) + function(x, y), 您是在告诉 Python 将 ffunction 分配给新变量(同名)并在 lambda 中使用这些新变量。对其他变量所做的更改无关紧要

您会在代码中发现另一个错误。第一行必须是 f = lambda x, y: 0,否则您将向 None 添加一个整数。


请注意,如果您只是计划添加内容,@josemz 是更简单的解决方案。如果您想学习在其他 lambda 中使用 lambda,则需要确保正确绑定变量。

【讨论】:

感谢您的解释!这很有帮助。 当你写像[lambda x: x + i for i in range(10)] 这样的东西时,这真的会让你感到痛苦。你认为你有一个包含 10 个函数的数组,第一个函数加 0,第二个函数加 1,以此类推。但是只有一个i,当我们完成i=9,所以你有一个由十个函数组成的数组,所有这些函数都加9。你需要写[lambda x, i=i: x + 1 for i in range(10)]以便i被复制到一个新变量。

Nodejs API调用将未定义返回给lambda函数

】NodejsAPI调用将未定义返回给lambda函数【英文标题】:NodejsAPIcallreturningundefinedtolambdafunction【发布时间】:2018-03-0715:00:30【问题描述】:这是将调用api的awslambda函数:\'usestrict\';varrequest=require("request")exports.handler=function(event,context,... 查看详情

GLSL:找不到我的自定义函数

...为一个单独的函数之前,它工作得很好。我希望能够多次调用它以将不同版本的效果叠加在一起。但是,一旦我创建了这个自定义函数,着色器就开始抛出错误:ERROR:0:33:\'grid\':nomatchingoverloaded 查看详情

无法通过自定义 cloudformation 资源调用 lambda 函数

】无法通过自定义cloudformation资源调用lambda函数【英文标题】:Can\'tinvokelambdafunctionbyacustomcloudformationresource【发布时间】:2017-07-2308:30:52【问题描述】:我正在创建一个cloudformation模板,该模板创建一个DynamoDBtable。我想将模板的... 查看详情

创建在特定事件发生时调用的自定义 appsync 解析器或 lambda 函数

】创建在特定事件发生时调用的自定义appsync解析器或lambda函数【英文标题】:Creatingcustomappsyncresolversorlambdafunctionsthatarecalledwhenacertaineventhappens【发布时间】:2019-11-2915:58:05【问题描述】:我正在使用AppSync开发一个应用程序,并... 查看详情

pythonlambda函数

...于如下普通定义的函数func(x,y,z):这样定义的lambda函数,调用形式与普通定义的函数一样:运行结果: 查看详情

如何将 Numpy Eig 与 Python Lambda 函数一起使用?

】如何将NumpyEig与PythonLambda函数一起使用?【英文标题】:HowtouseNumpyEigwithPythonLambdafunction?【发布时间】:2021-06-2201:54:49【问题描述】:我可以将lambda函数与numpy的eig函数一起使用吗?测试题:importnumpyasnpclassc1:def__init__(self):self.ma... 查看详情

如何在kotlin中将lambdas与函数式接口一起使用并直接将lambda分配给var

】如何在kotlin中将lambdas与函数式接口一起使用并直接将lambda分配给var【英文标题】:Howtouselambdastogetherwithfunctionalinterfacesanddirectlyassignlambdatovarinkotlin【发布时间】:2021-06-2921:07:19【问题描述】:我有这个代码:packageorg.medianik.kotl... 查看详情

fastreport调用delphi中的自定义函数

//定义一个函数;functionSmallToMoney(akey:real):string;begin //‘1234500‘end; //此处为fastreport加载自定义函数以便引用procedureTprint_from.FormCreate(Sender:TObject);begin frxReport1.AddFunction(‘functionSma 查看详情

c++基础(lambda)

...再进一步解释可以将函数赋值给变量,然后通过变量再去调用函数。我们学习一个新特性不是如何使用这个语法,而是在什么场景下恰当地去使用这个语法来解决实际问题。不要为了特效而改变故事情节,一个好的程序在其情节... 查看详情

在 Apps 脚本中的自定义函数中,BigQuery 调用失败

】在Apps脚本中的自定义函数中,BigQuery调用失败【英文标题】:BigQuerycallsfailedincustomfunctionsinAppsScript【发布时间】:2012-06-0106:03:07【问题描述】:我在AppsScript中编写了一个自定义函数,该函数使用函数参数构造查询并调用提供... 查看详情

AWS lambda 函数调用另一个带参数的 lambda 函数

】AWSlambda函数调用另一个带参数的lambda函数【英文标题】:AWSlambdafunctioncallanotherlambdafunctionwithparameter【发布时间】:2019-06-2813:40:24【问题描述】:我需要制作两个lambda函数,一个调用另一个带参数的函数,被调用的函数将参数... 查看详情

r语言的自定义函数—字符组合

前两天写了几个函数,对里面收获到的一些东西做一些记录。函数str_comb,用于输入一个字符串或数值向量,返回由向量中元素组成的不重复的长度小于向量长度的所有组合,结果用矩阵形式输出。函数使用结果如下:思路很简... 查看详情

lambda表达式(代码片段)

一个lambda表达式表示一个可调用的代码单元,可以理解为一个未命名的内联函数。与函数类似,一个lambda具有一个返回类型、一个参数列表和一个函数体,但与函数不同,lambda可能定义在函数内部。形式:[capturelist](parameterlist)-&... 查看详情

如何从 lambda 函数调用秘密管理器

】如何从lambda函数调用秘密管理器【英文标题】:Howtocallsecretmanagerfromlambdafunction【发布时间】:2020-09-2108:51:40【问题描述】:我是AWS新手。我正在尝试将我的lambda函数建立到AWSRedshift,以便我可以查询数据库。我已将凭据存储在... 查看详情

异步 Lambda 函数:返回 promise 或发送 responseURL 不会终止 CloudFormation 自定义资源调用

...返回promise或发送responseURL不会终止CloudFormation自定义资源调用【英文标题】:AsyncLambdaFunction:ReturningpromiseorsendingresponseURLdoesnotterminateCloudFormationcustomresourceinvocation【发布时间】:2021-04-0115:50:45【问题描述】:我有一个通过Cloud 查看详情

如何私下定义 lambda 函数?

】如何私下定义lambda函数?【英文标题】:Howtodefinelambdafunctioninprivate?【发布时间】:2019-07-2215:23:17【问题描述】:我想将lambda函数的详细信息隐藏到类的private部分中。我试图将lambda函数部分与for_each()函数分开。#include<algorith... 查看详情

为啥我的自定义函数调用方法中的 println 语句没有出现在日志中?

】为啥我的自定义函数调用方法中的println语句没有出现在日志中?【英文标题】:WhydoprintlnstatementsinmycustomFunction\'scallmethodnotappearinthelogs?为什么我的自定义函数调用方法中的println语句没有出现在日志中?【发布时间】:2017-05-26... 查看详情

如何设置 lambda 函数以一起使用两个触发器

】如何设置lambda函数以一起使用两个触发器【英文标题】:Howsetupalambdafunctionforworkingwithtwotriggerstogether【发布时间】:2021-12-2909:13:28【问题描述】:当某些文件以两个不同的S3前缀上传时,我需要一个lambda。例子:我有文件A和文... 查看详情