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

Python 我可以根据lambda函数在内存中的地址或其id调用它吗?,python,lambda,Python,Lambda,我正在学习Python中的lambda函数 如果我写了一个lambda表达式行,但没有将它赋给某个函数名,那么我可以稍后通过它在内存中的地址或id调用该lambda函数吗 或者我可以用一些指针,比如C中的指针来指向内存的那个部分吗 在下图中,您可以看到我编写了两次lambda表达式,发现它们在内存中具有相同的地址,但是如果我将lambda x:x**2分配给变量a,则地址不同 我想根据它在内存中的地址使用lambda函数lambda x:x**2 谢谢。您在两个lambda定义中看到相同的id这

我正在学习Python中的lambda函数

如果我写了一个lambda表达式行,但没有将它赋给某个函数名,那么我可以稍后通过它在内存中的地址或id调用该lambda函数吗

或者我可以用一些指针,比如C中的指针来指向内存的那个部分吗

在下图中,您可以看到我编写了两次lambda表达式,发现它们在内存中具有相同的地址,但是如果我将lambda x:x**2分配给变量a,则地址不同

我想根据它在内存中的地址使用lambda函数lambda x:x**2


谢谢。

您在两个lambda定义中看到相同的id这一事实是一个实现细节-第一个lambda是立即收集的,因为没有对它的引用,因此该id可以免费重用,并且恰好被第二个lambda重用

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

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

请注意,这也不是特定于函数的,Python函数是对象提示:在Python中,可以放在LHS上的所有内容都是对象,上述内容适用于所有对象

我想知道我是否能根据一个对象在内存中的地址给它一个名称,以便调用或使用

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


如果您希望理解Python,首先需要停止使用C概念进行思考,学习Python概念

如果你想引用一个函数,通过f=lambda x:x赋值,或者更好的方法是使用def,如果你的lambda函数不是匿名的,你可能做得不对,加上使用内存地址将依赖于bestThx的实现细节,我知道我可以使用f=lambda x:x将lambda表达式赋值给某个变量,但是我想知道我是否可以将内存中的地址分配给某个变量。你知道,一旦我写下lambda x:x**2这行代码,Python就会告诉我这个表达式的类型和地址,但是我再也不能使用这个函数对象了。所以,我想知道我是否可以根据一个对象在内存中的地址给它一个名称来调用或使用它。@AI。cf我的答案。欢迎来到Stackoverflow!请将代码作为文本而不是图像发布。搜索引擎无法为图像编制索引,因此其他用户无法找到图像。谢谢谢谢你的帮助:@Al。不客气。你肯定想读这篇文章: