參考:https://www.cnblogs.com/andywenzhi/p/7453374.html?tdsourcetag=s_pcqq_aiomsg(寫的蠻好)
python中的賦值操作“=”和C++中的賦值操作"="還是有很大區別的,這點需要注意!
比如例1:
C++和python操作后會得到同樣結果,但是兩者在PC中的操作其實不同;
(1)python:代碼在內存中的操作示意圖:
首先內存會為3創建一個數據單元,再讓b指向這個單元;然后b+5得到8,內存又會為這個8創建一個數據單元,再讓b指向這個單元(b指向的內存地址發生了改變!);
(2)C++:代碼在內存中的操作示意圖:
首先內存會創建一個int類,並分配對應的數據單元,類名為b,b類中存儲數據3,然后b+3則對b類中的數據3加5變成8(b指向的內存地址沒有發生改變!)
由上可知:
(1)C++通過操作內存地址而間接操作數據,數據處於被動地位;Python則是直接操控數據,數據處於主動地位,變量只是作為一種引用的關系存在,而不再擁有存儲的功能;
(2)可以簡單地認為“數據在python中被稱為對象(object)”,對象不能被覆蓋,也不能被直接銷毀(python中有垃圾回收機制來回收不用地對象,比如引用計數機制);
了解了上面,再說一個例子就好理解了,見下面:
這里要注意:對象分為可變對象(單個元素)和不可變對象(集合:list、tuple、dict等),所以會有上面地輸出信息;