我有这个:
>>> a = lambda : lambda x : x * x
这每次都给我一个不变的地址:
>>> a
<function <lambda> at 0x7f22769e76e0>
>>> a
<function <lambda> at 0x7f22769e76e0>
>>> a
<function <lambda> at 0x7f22769e76e0>
然而,事实并非如此。为什么这样?还要注意它只给出了两个地址?为什么这样?内部 lambda 函数是动态创建并在每次调用时返回的a()
吗?不是在声明 a 时创建的吗?
>>> a()
<function <lambda> at 0x7f22769e7320>
>>> a()
<function <lambda> at 0x7f22769e75f0>
>>> a()
<function <lambda> at 0x7f22769e7320>
>>> a()
<function <lambda> at 0x7f22769e75f0>