python實現(xiàn)在函數(shù)中修改變量值的方法
和其他語言不一樣,傳遞參數(shù)的時候,python不允許程序員選擇采用傳值還是傳引用。Python參數(shù)傳遞采用的肯定是“傳對象引用”的方式。
實際上,這種方式相當(dāng)于傳值和傳引用的一種綜合。如果函數(shù)收到的是一個可變對象(比如字典或者列表)的引用,
就能修改對象的原始值--相當(dāng)于通過“傳引用”來傳遞對象。如果函數(shù)收到的是一個不可變對象(比如數(shù)字、字符或者元組)的引用,
就不能直接修改原始對象--相當(dāng)于通過“傳值'來傳遞對象。
python一般內(nèi)部賦值變量的話,都是傳個引用變量,和C語言的傳地址的概念差不多??梢杂胕d()來查詢內(nèi)存地址
下面的str_是可修改的對象,因此在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_是不可修改的對象,因此在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[:]。
?。。∽⒁膺@一點,這可是可以引起重大錯誤的。。。
以上這篇python實現(xiàn)在函數(shù)中修改變量值的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)文字轉(zhuǎn)語音的項目實踐
pyttsx3是一個Python庫,用于文字轉(zhuǎn)語音的功能,它可以將文本轉(zhuǎn)換為語音,并使用不同的音頻引擎進(jìn)行輸出,本文就來詳細(xì)的介紹一下用法,具有一定的參考價值,感興趣的可以了解一下2023-08-08pycharm如何使用anaconda中的各種包(操作步驟)
這篇文章主要介紹了pycharm如何使用anaconda中的各種包,本文通過操作步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Python中關(guān)鍵字global和nonlocal的區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于Python中關(guān)鍵字global和nonlocal的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09Cpython3.9源碼解析python中的大小整數(shù)
這篇文章主要介紹了Cpython3.9源碼解析python中的大小整數(shù),在CPython中,小整數(shù)對象池是一種優(yōu)化機(jī)制,用于減少對常用小整數(shù)的內(nèi)存分配和銷毀開銷,需要的朋友可以參考下2023-04-04