python中的引用怎么理解_Python函数通过引用调用
基本上有三種'函數(shù)調(diào)用':通過(guò)價(jià)值
通過(guò)引用傳遞
通過(guò)對(duì)象引用傳遞
Python是一種PASS-BY-OBJECT-REFERENCE編程語(yǔ)言。
首先,重要的是要理解一個(gè)變量,變量(對(duì)象)的值是兩個(gè)獨(dú)立的東西。變量'指向'對(duì)象。變量不是對(duì)象。再次:
變量不是對(duì)象
示例:在以下代碼行中:>>> x = []
[]是空列表,x是指向空列表的變量,但x本身不是空列表
將變量(x,在上述情況下)視為一個(gè)框,將變量([])的“值”視為框內(nèi)的對(duì)象。
通過(guò)對(duì)象引用(python中的情況):
這里,“對(duì)象引用按值傳遞”。def append_one(li):
li.append(1)x = [0]append_one(x)print x
這里,語(yǔ)句x = [0]產(chǎn)生一個(gè)指向?qū)ο骩0]的變量x(box)
在被調(diào)用的函數(shù)上,創(chuàng)建了一個(gè)新的li。li的內(nèi)容是SAME作為box x的內(nèi)容。兩個(gè)框都包含相同的對(duì)象。也就是說(shuō),兩個(gè)變量都指向內(nèi)存中的同一個(gè)對(duì)象。因此,li指向的對(duì)象的任何更改也將由x指向的對(duì)象反映。
總之,上述計(jì)劃的產(chǎn)出將是:
[0,1]
注意:
如果在函數(shù)中重新分配變量li,則li將指向內(nèi)存中的單獨(dú)對(duì)象。但是,x將繼續(xù)指向它之前指向的內(nèi)存中的同一個(gè)對(duì)象。
例:def append_one(li):
li = [0, 1]x = [0]append_one(x)print x
該計(jì)劃的輸出將是:
[0]
通過(guò)參考:
調(diào)用函數(shù)的框傳遞給被調(diào)用函數(shù)。隱含地,框的內(nèi)容(變量的值)被傳遞給被調(diào)用的函數(shù)。因此,對(duì)被調(diào)用函數(shù)中的框內(nèi)容的任何更改都將反映在調(diào)用函數(shù)中。
通過(guò)價(jià)值:
在被調(diào)用函數(shù)中創(chuàng)建一個(gè)新框,并將來(lái)自調(diào)用函數(shù)的框內(nèi)容的副本存儲(chǔ)到新框中。
希望這可以幫助。
總結(jié)
以上是生活随笔為你收集整理的python中的引用怎么理解_Python函数通过引用调用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 日本“躬匠精神”!制造业巨头川崎重工承认
- 下一篇: iOS 16隐藏福利被发现:能删更多预装