python基礎(chǔ)之變量與內(nèi)存管理方式
一、變量的定義
? 變量指的就是隨時可變化的量,量通??梢灾笇嵨锏臓顟B(tài)(比如:大樹的高度、人的年齡等)。
變量的組成通常為:變量名、變量值組成。變量名需要保持唯一性,通過變量名即可以找到對應(yīng)數(shù)據(jù)。
變量允許被多次更改,在程序運行過程中,實際就是一系列變量值的變化。
二、變量的賦值
將數(shù)據(jù)放入變量的過程叫做賦值,賦值符號為:“=”。
變量的定義方式為:name=value。在強類型的編程語言中,定義變量時要指明變量的類型,python是弱類型語言,不需要事先聲明變量類型
弱類型語言有兩個特點:
- ? 變量無須聲明就可以直接賦值對一個不存在的變量賦值就相當于定義了一個新變量。
- ? 變量的數(shù)據(jù)類型可以隨時改變比如,同一個變量可以先被賦值為整數(shù),再次被賦值為字符串。
test = 123 test = 12.30 test = "test"
三、變量的使用原則
使用原則:先定義,后引用
如果未定義時直接引用,會報錯,比如:未定義變量a,直接打印變量值,則會直接提示NameError: name xxx is not defined
In [1]: a=test
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-de92534033e7> in <module>()
----> 1 a=testNameError: name 'test' is not defined
In [2]: print(a)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-2-bca0e2660b9f> in <module>()
----> 1 print(a)NameError: name 'a' is not defined
四、變量命名規(guī)范
原則1:變量命名時盡量做到見名知意
如果變量名沒有意義,在代碼量大時,自己或別人無法直觀的清楚這個變量的含義。
原則2:變量名的由字母數(shù)字下劃線組成
在字母中,純大寫一般標識常量,所以一般用小寫標識變量,另外不要用拼音、漢字作為變量,雖然可以使代碼運行,但是很不專業(yè)
原則3:變量名不能由數(shù)字開頭
原則4:變量名不能使用python內(nèi)置關(guān)鍵詞
? 如:break、print、if……,當使用內(nèi)置關(guān)鍵詞做變量時,你的變量會覆蓋原有功能,使之不能使用
五、變量的內(nèi)存管理
變量在進行賦值時,就是在內(nèi)存開辟一個空間,把內(nèi)存空間的地址捆綁給了變量名,我們通過變量名就可以找到這個對應(yīng)值。定義變量會占用內(nèi)存空間,對于計算機而言,內(nèi)存的總量是有限的,而且內(nèi)存也不是只服務(wù)于這一個程序,還有很多程序也需要使用,所以,當定義的變量不使用后需要把對應(yīng)的內(nèi)存空間給釋放出去。否則申請了內(nèi)存空間又不使用,就是在浪費內(nèi)存空間。當未被釋放的內(nèi)存太多,把可用內(nèi)存全部裝滿后,就會導(dǎo)致內(nèi)存溢出。
在我們寫代碼時,定義的變量在不使用后,進行內(nèi)存空間釋放。這個過程就叫做內(nèi)存管理。但是內(nèi)存管理是一件非常繁瑣的事情,如果處理不恰當,就會導(dǎo)致程序崩潰。python推出了一個內(nèi)存管理機制,稱為垃圾回收機制(Garbage Collction,簡稱GC)。
當內(nèi)存中的變量值地址沒有綁定任何變量名時,無法通過變量名找到這個內(nèi)存地址時,這個內(nèi)存地址占用就是垃圾。垃圾回收機制就是用來釋放這些沒有任何綁定關(guān)系的內(nèi)存地址。而這其中會涉及一個概念引用計數(shù),也就是內(nèi)存地址綁定的數(shù)量,如下:
a = 100 b = a c = a #定義變量a時,此時對應(yīng)的內(nèi)存地址引用計數(shù)為1,b也綁定的是同一個內(nèi)存地址,此時引用計數(shù)為2,同理綁定c后引用計數(shù)變?yōu)?。 # -------------------- del a #引用計數(shù)為2 del b #引用計數(shù)為1 c = 101 #當重新綁定變量c的內(nèi)存地址后,因為后運行,所以變量值100對應(yīng)的內(nèi)存地址,引用計數(shù)變?yōu)? #當abc的綁定關(guān)系都解除后,此時引用計數(shù)變?yōu)?,無法通過任何變量找到“test”這個內(nèi)存地址。此時“test”就被稱為垃圾。
python解釋器默認的垃圾回收機制,在一直掃描內(nèi)存里面有沒有引用計數(shù)為0的,一旦發(fā)現(xiàn)存在,就會立即把這個內(nèi)存空間給回收掉。不需要我們進行手動處理。
六、變量的特征
變量有兩個重要的特征,分別是id和type。
id反應(yīng)的就是根據(jù)變量值的內(nèi)存地址所計算出來的一個id號碼,注意:id不是內(nèi)存地址,是通過內(nèi)存地址計算出來的一個值,具有唯一性可以理解為內(nèi)存的映射。
type查看的是變量的類型,因為事物的狀態(tài)是多樣的,而變量是存儲事物的狀態(tài),比如:數(shù)字、字符串
In [3]: a=123 In [4]: b="str" In [5]: id(a) Out[5]: 9082880 In [6]: id(b) Out[6]: 139983741909344 In [7]: type(a) Out[7]: int In [8]: type(b) Out[8]: str
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python web應(yīng)用程序之Django數(shù)據(jù)庫詳解
這篇文章主要介紹了python web應(yīng)用程序之Django數(shù)據(jù)庫,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2024-06-06python通過floor函數(shù)舍棄小數(shù)位的方法
這篇文章主要介紹了python通過floor函數(shù)舍棄小數(shù)位的方法,實例分析了Python中floor函數(shù)的功能及使用技巧,需要的朋友可以參考下2015-03-03使用Python創(chuàng)建簡單的HTTP服務(wù)器的方法步驟
這篇文章主要介紹了使用Python創(chuàng)建簡單的HTTP服務(wù)器的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Python調(diào)整matplotlib圖片大小的3種方法匯總
我們在使用matplotlib作圖時,會遇到圖片不清晰或者圖片大小不是我們想要的,這個時候就需要調(diào)整下,這篇文章主要給大家介紹了關(guān)于Python調(diào)整matplotlib圖片大小的3種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-08-08