为了账号安全,请及时绑定邮箱和手机立即绑定

我可以根据其在内存中的地址或ID调用lambda函数吗?

我可以根据其在内存中的地址或ID调用lambda函数吗?

宝慕林4294392 2021-05-09 12:58:06
我正在学习Python中的lambda函数。如果我编写了一个lambda表达式行而未将其分配给某些函数名称,我以后可以通过其在内存或id中的地址来调用该lambda函数吗?还是我可以使用一些“指针”(例如C语言中的内容)来指向那部分内存?在下面的图片中,您可以看到我写了两次lambda表达式,发现它们在内存中具有相同的地址,但是如果我将“ lambda x:x ** 2”分配给变量a,则该地址是不同的。我想根据其在内存中的地址使用该lambda函数“ lambda x:x ** 2”。
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

您在两个lambda定义中看到相同的id的事实是一个实现细节-第一个lambda是立即收集的(因为没有对其进行引用),因此该id可自由重用,并且碰巧确实可用于第二个lambda。

不,Python不是C,activeley会阻止任何直接的内存访问。请注意,CPython的对象ID是内存地址这一事实也是实现细节-它不是语言定义的一部分,并且其他实现(例如Jhython)可以自由地对对象ID使用其他内容。

如果您想使用lambda(实际上,function-lambda仅是语法糖,并且function像常规def语句一样产生对象),则必须对其进行引用(作为变量,作为函数参数-实际上是变量- ,作为集合中的元素,作为对象中的属性等)。

请注意,这也不是特定于函数的,Python函数是对象(提示:您可以在Python的LHS上放置的所有对象都是对象),以上对于所有对象都适用。

我想知道是否可以根据对象在内存中的地址来命名该对象以进行调用或使用

您认为foo = lambda x: x*2正在做什么?它“给对象一个名称”(或更确切地说“将对象绑定到名称”),以便您以后可以使用它,并且绑定(内部)依赖于对象的ID /内存地址/等来访问对象。

如果您希望了解Python,则首先需要停止思考C概念并学习Python概念。


查看完整回答
反对 回复 2021-05-18
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号