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