最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python基礎(chǔ)之變量與內(nèi)存管理方式

 更新時(shí)間:2024年09月12日 14:14:09   作者:小鹿先生~  
本文介紹了變量的定義、賦值、使用原則、命名規(guī)范、內(nèi)存管理以及變量的特征,變量是程序中可變化的量,需要先定義后使用,可多次更改值,Python作為弱類型語言,變量無需聲明類型即可賦值

一、變量的定義

? 變量指的就是隨時(shí)可變化的量,量通??梢灾笇?shí)物的狀態(tài)(比如:大樹的高度、人的年齡等)。

變量的組成通常為:變量名、變量值組成。變量名需要保持唯一性,通過變量名即可以找到對應(yīng)數(shù)據(jù)。

變量允許被多次更改,在程序運(yùn)行過程中,實(shí)際就是一系列變量值的變化。

二、變量的賦值

將數(shù)據(jù)放入變量的過程叫做賦值,賦值符號為:“=”。

變量的定義方式為:name=value。在強(qiáng)類型的編程語言中,定義變量時(shí)要指明變量的類型,python是弱類型語言,不需要事先聲明變量類型

弱類型語言有兩個(gè)特點(diǎn):

  • ? 變量無須聲明就可以直接賦值對一個(gè)不存在的變量賦值就相當(dāng)于定義了一個(gè)新變量。
  • ? 變量的數(shù)據(jù)類型可以隨時(shí)改變比如,同一個(gè)變量可以先被賦值為整數(shù),再次被賦值為字符串。
test = 123
test = 12.30
test = "test"

三、變量的使用原則

使用原則:先定義,后引用

如果未定義時(shí)直接引用,會報(bào)錯(cuò),比如:未定義變量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=test

NameError: 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:變量命名時(shí)盡量做到見名知意

如果變量名沒有意義,在代碼量大時(shí),自己或別人無法直觀的清楚這個(gè)變量的含義。

原則2:變量名的由字母數(shù)字下劃線組成

在字母中,純大寫一般標(biāo)識常量,所以一般用小寫標(biāo)識變量,另外不要用拼音、漢字作為變量,雖然可以使代碼運(yùn)行,但是很不專業(yè)

原則3:變量名不能由數(shù)字開頭

原則4:變量名不能使用python內(nèi)置關(guān)鍵詞

? 如:break、print、if……,當(dāng)使用內(nèi)置關(guān)鍵詞做變量時(shí),你的變量會覆蓋原有功能,使之不能使用

五、變量的內(nèi)存管理

變量在進(jìn)行賦值時(shí),就是在內(nèi)存開辟一個(gè)空間,把內(nèi)存空間的地址捆綁給了變量名,我們通過變量名就可以找到這個(gè)對應(yīng)值。定義變量會占用內(nèi)存空間,對于計(jì)算機(jī)而言,內(nèi)存的總量是有限的,而且內(nèi)存也不是只服務(wù)于這一個(gè)程序,還有很多程序也需要使用,所以,當(dāng)定義的變量不使用后需要把對應(yīng)的內(nèi)存空間給釋放出去。否則申請了內(nèi)存空間又不使用,就是在浪費(fèi)內(nèi)存空間。當(dāng)未被釋放的內(nèi)存太多,把可用內(nèi)存全部裝滿后,就會導(dǎo)致內(nèi)存溢出。

在我們寫代碼時(shí),定義的變量在不使用后,進(jìn)行內(nèi)存空間釋放。這個(gè)過程就叫做內(nèi)存管理。但是內(nèi)存管理是一件非常繁瑣的事情,如果處理不恰當(dāng),就會導(dǎo)致程序崩潰。python推出了一個(gè)內(nèi)存管理機(jī)制,稱為垃圾回收機(jī)制(Garbage Collction,簡稱GC)。

當(dāng)內(nèi)存中的變量值地址沒有綁定任何變量名時(shí),無法通過變量名找到這個(gè)內(nèi)存地址時(shí),這個(gè)內(nèi)存地址占用就是垃圾。垃圾回收機(jī)制就是用來釋放這些沒有任何綁定關(guān)系的內(nèi)存地址。而這其中會涉及一個(gè)概念引用計(jì)數(shù),也就是內(nèi)存地址綁定的數(shù)量,如下:

a = 100
b = a
c = a
#定義變量a時(shí),此時(shí)對應(yīng)的內(nèi)存地址引用計(jì)數(shù)為1,b也綁定的是同一個(gè)內(nèi)存地址,此時(shí)引用計(jì)數(shù)為2,同理綁定c后引用計(jì)數(shù)變?yōu)?。
# --------------------

del a
#引用計(jì)數(shù)為2
del b
#引用計(jì)數(shù)為1

c = 101
#當(dāng)重新綁定變量c的內(nèi)存地址后,因?yàn)楹筮\(yùn)行,所以變量值100對應(yīng)的內(nèi)存地址,引用計(jì)數(shù)變?yōu)?

#當(dāng)abc的綁定關(guān)系都解除后,此時(shí)引用計(jì)數(shù)變?yōu)?,無法通過任何變量找到“test”這個(gè)內(nèi)存地址。此時(shí)“test”就被稱為垃圾。

python解釋器默認(rèn)的垃圾回收機(jī)制,在一直掃描內(nèi)存里面有沒有引用計(jì)數(shù)為0的,一旦發(fā)現(xiàn)存在,就會立即把這個(gè)內(nèi)存空間給回收掉。不需要我們進(jìn)行手動處理。

六、變量的特征

變量有兩個(gè)重要的特征,分別是id和type。

id反應(yīng)的就是根據(jù)變量值的內(nèi)存地址所計(jì)算出來的一個(gè)id號碼,注意:id不是內(nèi)存地址,是通過內(nèi)存地址計(jì)算出來的一個(gè)值,具有唯一性可以理解為內(nèi)存的映射。

type查看的是變量的類型,因?yàn)槭挛锏臓顟B(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é)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

镇赉县| 文安县| 苍南县| 民丰县| 广西| 玉田县| 苍溪县| 波密县| 丹巴县| 西乌珠穆沁旗| 丹阳市| 盐城市| 松滋市| 昌都县| 拜城县| 广饶县| 苍梧县| 正阳县| 台东县| 东明县| 托里县| 高陵县| 万年县| 利津县| 垣曲县| 祥云县| 河东区| 通江县| 镇坪县| 樟树市| 霍州市| 龙州县| 图木舒克市| 桓仁| 泰顺县| 漳浦县| 新丰县| 奇台县| 宾川县| 沧州市| 锦屏县|