小編給大家分享一下python中賦值與c語言區(qū)別有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計、新巴爾虎右網(wǎng)絡(luò)推廣、小程序定制開發(fā)、新巴爾虎右網(wǎng)絡(luò)營銷、新巴爾虎右企業(yè)策劃、新巴爾虎右品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供新巴爾虎右建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.compython中賦值與c語言區(qū)別?先來看看簡單的 Python 代碼在內(nèi)存中是什么樣子的:
b = 3 b = b + 5
它在內(nèi)存中的操作示意圖是這樣的:
然而,從代碼的的字面意思上看,“把 3 賦給 b,把 b 加 5 之后再賦給 b?!?/p>
也就是把代碼看成這個樣子:
b ← 3 b ← b + 5
所以下面這張在內(nèi)存中的操作圖可能更符合我們的直覺:
也即 b + 5 的值又寫回到 b 中。典型的 C 程序就是這樣的。為變量 b 分配一個 int 型的內(nèi)存單元,然后將整數(shù) 3 存放在該內(nèi)存單元中。b 就代表了該塊內(nèi)存空間,不再移動,可以更新 b 的值,但 b 在內(nèi)存中的地址就不再變化了。所以我們說 b = b + 5,就等于 b ← b + 5,把 b 的值加 5 之后還依然放入 b 中。 變量 b 和它所在內(nèi)存空間緊緊綁定在一起。
而再看看上面 Python 中的內(nèi)存示意圖,b + 5 得到了一個新值,然后令 b 指向了這個新值。換句話說,它做的是事情是這樣的:
b → 3 b → b + 5
先令 b 指向 3,再令 b 指向 b + 5 這個新值。
C 程序更新的是內(nèi)存單元中存放的值,而 Python 更新的是變量的指向。
C 程序中變量保存了一個值,而 Python 中的變量指向一個值。
如果說 C 程序是通過操縱內(nèi)存地址而間接操作數(shù)據(jù)(每個變量固定對應(yīng)一個內(nèi)存地址,所以說操縱變量就是操縱內(nèi)存地址),數(shù)據(jù)處于被動地位,那么 Python 則是直接操縱數(shù)據(jù),數(shù)據(jù)處于主動地位,變量只是作為一種引用關(guān)系而存在,而不再擁有存儲功能。
在 Python 中,每一個數(shù)據(jù)都會占用一個內(nèi)存空間,如 b + 5 這個新的數(shù)據(jù)也占用了一個全新的內(nèi)存空間。
Python 的這種操作讓數(shù)據(jù)成為主體,數(shù)據(jù)與數(shù)據(jù)之間直接進(jìn)行交互。
而數(shù)據(jù)在 Python 中被稱為對象 (Object)。
這句話并不太嚴(yán)謹(jǐn)。不過在這個簡單的例子中是成立的。
一個整數(shù) 3 是一個 int 型對象,一個 'hello' 是一個字符串對象,一個 [1, 2, 3] 是一個列表對象。
Python 把一切數(shù)據(jù)都看成「對象」。它為每一個對象分配一個內(nèi)存空間。 一個對象被創(chuàng)建后,它的 id 就不再發(fā)生變化。
id 是 identity 的縮寫。意為“身份;標(biāo)識”。
在 Python 中,可以使用 id(),來獲得一個對象的 id,可以看作是該對象在內(nèi)存中的地址。
一個對象被創(chuàng)建后,它不能被直接銷毀。因此,在上個例子中,變量 b 首先指向了對象 3,然后繼續(xù)執(zhí)行 b + 5,b + 5 產(chǎn)生了一個新的對象 8,由于對象 3 不能被銷毀,則令 b 指向新的對象 8,而不是用對象 8 去覆蓋對象 3。在代碼執(zhí)行完成后,內(nèi)存中依然有對象 3,也有對象 8,變量 b 指向了對象 8。
如果沒有變量指向?qū)ο?3(即無法引用它了),Python 會使用垃圾回收算法來決定是否回收它(這是自動的,不需要程序編寫者操心)。
一個舊的對象不能被覆蓋,因舊的對象交互而新產(chǎn)生的數(shù)據(jù)會放在新的對象中。也就是說每個對象是一個獨立的個體,每個對象都有自己的“主權(quán)”。因此,兩個對象的交互可以產(chǎn)生一個新的對象,而不會對原對象產(chǎn)生影響。在大型程序中,各個對象之間的交互錯綜復(fù)雜,這種獨立性則使得這些交互足夠安全。
C 程序為每個變量都分配一個了固定的內(nèi)存地址,這保證了 C 變量之間的獨立性。
C 語言是變量(也即內(nèi)存地址)之間的交互,Python 是對象(數(shù)據(jù))之間的交互。這是兩種不同的交互方式。
看完了這篇文章,相信你對python中賦值與c語言區(qū)別有哪些有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!