亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中賦值與c語言區別有哪些

發布時間:2020-09-09 13:52:34 來源:億速云 閱讀:174 作者:小新 欄目:編程語言

小編給大家分享一下python中賦值與c語言區別有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

python中賦值與c語言區別?先來看看簡單的 Python 代碼在內存中是什么樣子的:

b = 3
b = b + 5

它在內存中的操作示意圖是這樣的:

python中賦值與c語言區別有哪些

然而,從代碼的的字面意思上看,“把 3 賦給 b,把 b 加 5 之后再賦給 b。”

也就是把代碼看成這個樣子:

b ← 3
b ← b + 5

所以下面這張在內存中的操作圖可能更符合我們的直覺:

python中賦值與c語言區別有哪些

也即 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語言區別有哪些有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新密市| 马关县| 黑山县| 定襄县| 正宁县| 资中县| 盘山县| 治多县| 镇坪县| 舟山市| 方山县| 宁乡县| 张家口市| 陆河县| 靖远县| 绍兴市| 沾化县| 井研县| 吴桥县| 龙井市| 八宿县| 龙胜| 大同县| 湘西| 兴海县| 洛川县| 布尔津县| 澄城县| 竹山县| 涟水县| 贵南县| 恩平市| 通城县| 镇沅| 宁强县| 两当县| 郴州市| 乐业县| 松阳县| 潞城市| 康乐县|