中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

解開動態類型領域中 Python 的變量是什么?

發布時間:2020-04-10 09:37:56 來源:網絡 閱讀:228 作者:Python熱愛者 欄目:編程語言

寫這篇文章源自上次和一位讀者的交流,在給他回答問題的時候我發現由于之前有學習?C?和?Java?這種靜態編譯類型語言的背景,使他在學習?Python?的時候還是會習慣用之前編程語言的思考去嘗試理解?Python,導致他有時候會覺得很困惑,這個直接表現在他對于很多概念的理解很混亂。

比如在?Python?中使用變量的時候不需要提前聲明變量及其類型,而且變量不會報錯,這在之前學習靜態語言的同學眼里是不可思議的,他們會有「這種情況下?Python?怎么知道變量是什么」等諸如此類的問題,這樣的問題其實已經是進入了「動態類型」的領域了,Python?中類型是在程序運行過程中自動決定的。

因為我之前也是做?C?和?C++?出身,初次接觸?Python?的時候也會有這種不適感,所以我計劃接下來更新一些文章,寫一些像上面這樣大家在轉變上可能會困惑的地方,希望能給你帶來一些幫助。

變量、對象和引用

像在上面說的,在?Python?中使用變量的時候不需要提前聲明變量及其類型,變量還是會正常工作。在?Python?中,這個是以一種非常流暢的方式完成,下面以?a?=?1?為例我們來看一下它到底是個什么情況。

首先是怎么知道創建了變量:對于變量?a,或者說是變量名?a,當程序第一次給它賦值的時候就創建了它,其實真實情況是?Python?在代碼運行之前就先去檢測變量名,我們不去具體深究這些,你只需要當作是「最開始的賦值創建了變量」。

再者是怎么知道變量是什么類型:其實這個很多人都沒有搞清楚,「類型」這個概念不是存在于變量中,而是存在于對象中。變量本身就是通用的,它只是恰巧在某個時間點上引用了當時的特定對象而已。就比如說在表達式中,我們用的那個變量會立馬被它當時所引用的特定對象所替代。

上面這個是動態語言明顯區別于靜態語言的地方,其實對于剛開始來說,如果你適應將「變量」和「對象」分開,動態類型你也就可以很容易理解了。

我們還是以?a?=?1?為例,其實從上面的講述中,我們很容易的可以發現對于?a?=?1?這個賦值語句?Python?是如何去執行它的:創建一個代表值?1?的對象?-->?創建一個變量?a?-->?將變量?a?和對象?1?連接。?下面我用一個圖來更清晰的表示一下:

解開動態類型領域中 Python 的變量是什么?

由上圖我們可以看出,變量?a?其實變成了對象?1?的一個引用。如果你學過指針的話,你就會發現在內部「變量其實就是到對象內存空間的一個指針」。

同樣還是上圖,我們還可以看出在?Python?中「引用」是從變量到對象的連接,它就是一種關系,在內存中以指針的形式實現。

寫在之后

所以總結一下,具體怎么來說明?Python?中的變量、對象和引用:

變量是到內存空間的一個指針,也就是擁有指向對象連接的空間;

對象是一塊內存,表示它們所代表的值;

引用就是自動形成的從變量到對象的指針。

當然從技術的角度來講對于上面的表述可能會存在一些問題,對象的結構絕不只是單純的存值那么簡單,但是對于剛入門來講先這樣理解就足夠了,至于后續更深層次的探索等自己能力達到了可以嘗試去接觸。


向AI問一下細節

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

AI

翁源县| 达拉特旗| 平邑县| 济源市| 礼泉县| 个旧市| 贵港市| 洮南市| 交口县| 读书| 清镇市| 龙岩市| 博乐市| 乐清市| 三台县| 肥东县| 荥经县| 奎屯市| 罗城| 通榆县| 泊头市| 旌德县| 年辖:市辖区| 龙江县| 辉南县| 如皋市| 宣化县| 井陉县| 云林县| 贵南县| 雷波县| 兴安县| 肇源县| 贡觉县| 岳阳县| 东乌珠穆沁旗| 绥滨县| 临漳县| 通山县| 阜宁县| 青州市|