和其他語言不一樣,傳遞參數(shù)的時(shí)候,python不允許程序員選擇采用傳值還是傳引用。Python參數(shù)傳遞采用的肯定是“傳對(duì)象引用”的方式。
實(shí)際上,這種方式相當(dāng)于傳值和傳引用的一種綜合。如果函數(shù)收到的是一個(gè)可變對(duì)象(比如字典或者列表)的引用,
就能修改對(duì)象的原始值--相當(dāng)于通過“傳引用”來傳遞對(duì)象。如果函數(shù)收到的是一個(gè)不可變對(duì)象(比如數(shù)字、字符或者元組)的引用,
就不能直接修改原始對(duì)象--相當(dāng)于通過“傳值'來傳遞對(duì)象。
python一般內(nèi)部賦值變量的話,都是傳個(gè)引用變量,和C語言的傳地址的概念差不多。可以用id()來查詢內(nèi)存地址
下面的str_是可修改的對(duì)象,因此在add函數(shù)中可以修改:
#!/usr/bin/env python #coding=utf-8 def add(s): s += 'b' print "In add function :", s if __name__ == "__main__": str_ = list("aaa") add(str_) print "In main function:", str_
輸出為:
In add function : ['a', 'a', 'a', 'b'] In main function: ['a', 'a', 'a', 'b']
下面的str_是不可修改的對(duì)象,因此在add函數(shù)中不能修改:
#!/usr/bin/env python #coding=utf-8 def add(s): s += 'b' print "In add function :", s if __name__ == "__main__": str_ = "aaa" add(str_) print "In main function:", str_
In add function : aaab In main function: aaa
關(guān)于python的復(fù)制
如果a=b的話, a和b的地址是相同的;如果只是想拷貝,那么就得用 a=b[:]。
!!!注意這一點(diǎn),這可是可以引起重大錯(cuò)誤的。。。
以上這篇python實(shí)現(xiàn)在函數(shù)中修改變量值的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
