欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、變量的定義

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

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

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

二、變量的賦值

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

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

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

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

三、變量的使用原則

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

如果未定義時(shí)直接引用,會(huì)報(bào)錯(cuò),比如:未定義變量a,直接打印變量值,則會(huì)直接提示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í)盡量做到見(jiàn)名知意

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

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

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

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

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

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

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

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

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

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

a = 100
b = a
c = a
#定義變量a時(shí),此時(shí)對(duì)應(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對(duì)應(yīng)的內(nèi)存地址,引用計(jì)數(shù)變?yōu)?

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

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

六、變量的特征

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

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

type查看的是變量的類型,因?yàn)槭挛锏臓顟B(tài)是多樣的,而變量是存儲(chǔ)事物的狀態(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)文章

  • 一步步教你用python給女朋友寫(xiě)個(gè)微信自動(dòng)提醒的程序

    一步步教你用python給女朋友寫(xiě)個(gè)微信自動(dòng)提醒的程序

    如今微信已成為我們?nèi)粘I畹闹饕涣鞴ぞ?但是微信自身的功能有時(shí)候可能并不能滿足我們的需要,因此我們會(huì)想是否可以進(jìn)行微信功能的拓展呢,這篇文章主要給大家介紹了關(guān)于利用python給女朋友寫(xiě)了個(gè)微信自動(dòng)提醒程序的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • fastcgi文件讀取漏洞之python掃描腳本

    fastcgi文件讀取漏洞之python掃描腳本

    這篇文章主要介紹了fastcgi文件讀取漏洞之python掃描腳本,需要的朋友可以參考下
    2017-04-04
  • python web應(yīng)用程序之Django數(shù)據(jù)庫(kù)詳解

    python web應(yīng)用程序之Django數(shù)據(jù)庫(kù)詳解

    這篇文章主要介紹了python web應(yīng)用程序之Django數(shù)據(jù)庫(kù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • python通過(guò)floor函數(shù)舍棄小數(shù)位的方法

    python通過(guò)floor函數(shù)舍棄小數(shù)位的方法

    這篇文章主要介紹了python通過(guò)floor函數(shù)舍棄小數(shù)位的方法,實(shí)例分析了Python中floor函數(shù)的功能及使用技巧,需要的朋友可以參考下
    2015-03-03
  • Python3中的循環(huán)語(yǔ)句示例詳解

    Python3中的循環(huán)語(yǔ)句示例詳解

    這篇文章主要介紹了Python3?循環(huán)語(yǔ)句,本文將詳細(xì)介紹Python3中的循環(huán)語(yǔ)句,給出各種循環(huán)的使用示例,以及運(yùn)行結(jié)果的解釋,需要的朋友可以參考下
    2023-04-04
  • 在python中使用xlrd獲取合并單元格的方法

    在python中使用xlrd獲取合并單元格的方法

    今天小編就為大家分享一篇在python中使用xlrd獲取合并單元格的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 使用Python創(chuàng)建簡(jiǎn)單的HTTP服務(wù)器的方法步驟

    使用Python創(chuàng)建簡(jiǎn)單的HTTP服務(wù)器的方法步驟

    這篇文章主要介紹了使用Python創(chuàng)建簡(jiǎn)單的HTTP服務(wù)器的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python調(diào)用文字識(shí)別OCR輕松搞定驗(yàn)證碼

    python調(diào)用文字識(shí)別OCR輕松搞定驗(yàn)證碼

    本文主要介紹了python調(diào)用文字識(shí)別OCR輕松搞定驗(yàn)證碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Django模板語(yǔ)言 Tags使用詳解

    Django模板語(yǔ)言 Tags使用詳解

    這篇文章主要介紹了Django模板語(yǔ)言 Tags使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python調(diào)整matplotlib圖片大小的3種方法匯總

    Python調(diào)整matplotlib圖片大小的3種方法匯總

    我們?cè)谑褂胢atplotlib作圖時(shí),會(huì)遇到圖片不清晰或者圖片大小不是我們想要的,這個(gè)時(shí)候就需要調(diào)整下,這篇文章主要給大家介紹了關(guān)于Python調(diào)整matplotlib圖片大小的3種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08

最新評(píng)論