1 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
您在兩個(gè)lambda定義中看到相同的id的事實(shí)是一個(gè)實(shí)現(xiàn)細(xì)節(jié)-第一個(gè)lambda是立即收集的(因?yàn)闆]有對(duì)其進(jìn)行引用),因此該id可自由重用,并且碰巧確實(shí)可用于第二個(gè)lambda。
不,Python不是C,activeley會(huì)阻止任何直接的內(nèi)存訪問。請(qǐng)注意,CPython的對(duì)象ID是內(nèi)存地址這一事實(shí)也是實(shí)現(xiàn)細(xì)節(jié)-它不是語(yǔ)言定義的一部分,并且其他實(shí)現(xiàn)(例如Jhython)可以自由地對(duì)對(duì)象ID使用其他內(nèi)容。
如果您想使用lambda(實(shí)際上,function
-lambda
僅是語(yǔ)法糖,并且function
像常規(guī)def
語(yǔ)句一樣產(chǎn)生對(duì)象),則必須對(duì)其進(jìn)行引用(作為變量,作為函數(shù)參數(shù)-實(shí)際上是變量- ,作為集合中的元素,作為對(duì)象中的屬性等)。
請(qǐng)注意,這也不是特定于函數(shù)的,Python函數(shù)是對(duì)象(提示:您可以在Python的LHS上放置的所有對(duì)象都是對(duì)象),以上對(duì)于所有對(duì)象都適用。
我想知道是否可以根據(jù)對(duì)象在內(nèi)存中的地址來(lái)命名該對(duì)象以進(jìn)行調(diào)用或使用
您認(rèn)為foo = lambda x: x*2
正在做什么?它“給對(duì)象一個(gè)名稱”(或更確切地說(shuō)“將對(duì)象綁定到名稱”),以便您以后可以使用它,并且綁定(內(nèi)部)依賴于對(duì)象的ID /內(nèi)存地址/等來(lái)訪問對(duì)象。
如果您希望了解Python,則首先需要停止思考C概念并學(xué)習(xí)Python概念。
添加回答
舉報(bào)