python中swap函数_python swap
swap里面的a,b 不會影響函數作用域外面的變量
java也不可以的吧;python里面沒有指針,你可以認為所有的東西都是指向的內容,但是不要試圖去改變指針的值
其實我覺得所有的對象都是不可變對象,所謂的可變對象,如列表等,只是常用的操作是可變操作而已(如:append)
a[0] = 1也會變啊,這些改的并不是列表本身,而是列表中的元素
數組本身的地址沒變,但是里面的元素可變
a = [1] 這樣就完全改了
所以沒什么是可變的,都是不可變的,所謂可變并不是實際可變,只是常用操作沒有改變
只能傳type* 或者vector
哪有什么指針,都是對象
go更混亂了
def change(a):
a.name = 'b'
return a
按照python的思路,肯定是這樣的寫法,函數就應該有明確返回
java 列表、數組遇到多線程時,各種并發錯誤煩死人
按照python的思路,肯定是這樣的寫法,函數就應該有明確返回
一句一句來,第一個val.append(100),并沒有修改列表,只是往列表里面加一個元素,并不會引起列表的引用改變,外部nums的列表引用和內部val是同一個,所以nums=[0, 1, 100];而val = ['T', 'Z', 'Y'] 這一句,是完全改變了列表,列表歸根究底是不可變的,所以此時val變成了一個全新的列表['T', 'Z', 'Y'],并且分配了一個地址,最后函數沒有返回值,所以val在這個語句之后就會被回收,沒有造成任何影響;
//python不能修改引用(變量) 可以修改對象
任何對象都是不可變的
所謂的可變對象只是常用操作沒有改變對象本身,只是改變某一個屬性
如果真要區分可變對象不可變對象,不如說是可哈希化和不可哈希化
如人類 與 對象你自己
對象(你自己)是不可變的,是具體的;但你的身高,體重等屬性卻是可變的
總結
以上是生活随笔為你收集整理的python中swap函数_python swap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3 新式类_python新式
- 下一篇: C++ string清空并释放内存空间的