您好,登錄后才能下訂單哦!
小編給大家分享一下python中賦值與c語言區別有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
python中賦值與c語言區別?先來看看簡單的 Python 代碼在內存中是什么樣子的:
b = 3 b = b + 5
它在內存中的操作示意圖是這樣的:
然而,從代碼的的字面意思上看,“把 3 賦給 b,把 b 加 5 之后再賦給 b。”
也就是把代碼看成這個樣子:
b ← 3 b ← b + 5
所以下面這張在內存中的操作圖可能更符合我們的直覺:
也即 b + 5 的值又寫回到 b 中。典型的 C 程序就是這樣的。為變量 b 分配一個 int 型的內存單元,然后將整數 3 存放在該內存單元中。b 就代表了該塊內存空間,不再移動,可以更新 b 的值,但 b 在內存中的地址就不再變化了。所以我們說 b = b + 5,就等于 b ← b + 5,把 b 的值加 5 之后還依然放入 b 中。 變量 b 和它所在內存空間緊緊綁定在一起。
而再看看上面 Python 中的內存示意圖,b + 5 得到了一個新值,然后令 b 指向了這個新值。換句話說,它做的是事情是這樣的:
b → 3 b → b + 5
先令 b 指向 3,再令 b 指向 b + 5 這個新值。
C 程序更新的是內存單元中存放的值,而 Python 更新的是變量的指向。
C 程序中變量保存了一個值,而 Python 中的變量指向一個值。
如果說 C 程序是通過操縱內存地址而間接操作數據(每個變量固定對應一個內存地址,所以說操縱變量就是操縱內存地址),數據處于被動地位,那么 Python 則是直接操縱數據,數據處于主動地位,變量只是作為一種引用關系而存在,而不再擁有存儲功能。
在 Python 中,每一個數據都會占用一個內存空間,如 b + 5 這個新的數據也占用了一個全新的內存空間。
Python 的這種操作讓數據成為主體,數據與數據之間直接進行交互。
而數據在 Python 中被稱為對象 (Object)。
這句話并不太嚴謹。不過在這個簡單的例子中是成立的。
一個整數 3 是一個 int 型對象,一個 'hello' 是一個字符串對象,一個 [1, 2, 3] 是一個列表對象。
Python 把一切數據都看成「對象」。它為每一個對象分配一個內存空間。 一個對象被創建后,它的 id 就不再發生變化。
id 是 identity 的縮寫。意為“身份;標識”。
在 Python 中,可以使用 id(),來獲得一個對象的 id,可以看作是該對象在內存中的地址。
一個對象被創建后,它不能被直接銷毀。因此,在上個例子中,變量 b 首先指向了對象 3,然后繼續執行 b + 5,b + 5 產生了一個新的對象 8,由于對象 3 不能被銷毀,則令 b 指向新的對象 8,而不是用對象 8 去覆蓋對象 3。在代碼執行完成后,內存中依然有對象 3,也有對象 8,變量 b 指向了對象 8。
如果沒有變量指向對象 3(即無法引用它了),Python 會使用垃圾回收算法來決定是否回收它(這是自動的,不需要程序編寫者操心)。
一個舊的對象不能被覆蓋,因舊的對象交互而新產生的數據會放在新的對象中。也就是說每個對象是一個獨立的個體,每個對象都有自己的“主權”。因此,兩個對象的交互可以產生一個新的對象,而不會對原對象產生影響。在大型程序中,各個對象之間的交互錯綜復雜,這種獨立性則使得這些交互足夠安全。
C 程序為每個變量都分配一個了固定的內存地址,這保證了 C 變量之間的獨立性。
C 語言是變量(也即內存地址)之間的交互,Python 是對象(數據)之間的交互。這是兩種不同的交互方式。
看完了這篇文章,相信你對python中賦值與c語言區別有哪些有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。