python的變量與賦值詳細(xì)分析
python的變量與賦值
1.變量的命名規(guī)則
變量其實(shí)通過(guò)一個(gè)標(biāo)記調(diào)用內(nèi)存中的值,而變量名就是這個(gè)標(biāo)記的名稱,但是萬(wàn)一這個(gè)標(biāo)記已經(jīng)被提前占用或者解釋器認(rèn)為這個(gè)標(biāo)記是不合法的,那么就會(huì)報(bào)錯(cuò)。下面總結(jié)了一下變量的命名規(guī)則:
1.不能使用python的關(guān)鍵字,也就是說(shuō)標(biāo)記不能被提前占用,python的關(guān)鍵字包括:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
2.變量名的第一個(gè)字符不能是數(shù)字,這樣的命名被認(rèn)為是不合法的。
3.變量名只能是字母、數(shù)字或下劃線(_)的任意組合。
規(guī)則就是規(guī)則,沒(méi)有什么好解釋的,但是我們可以在符合規(guī)則的前提下做進(jìn)一步的要求,詳情請(qǐng)參照python的pep8編碼規(guī)范
2.變量的賦值
在python中,我們對(duì)變量進(jìn)行賦值的時(shí)候,用的是一個(gè)等于符號(hào)(=),要注意不是兩個(gè)(==)。
例如:
a = 10
這段代碼的動(dòng)作就相當(dāng)于:

注意:我們并不是為標(biāo)記a建立了一個(gè)值,而是先建立一個(gè)值以后,再用一個(gè)標(biāo)記去指向它。
在知道了賦值是怎么進(jìn)行的以后,我們?cè)賮?lái)看下面這個(gè)代碼:
a = 10 b = a a = 20
那么,此時(shí)b=?
如果按照我們常用的數(shù)學(xué)思維的話,那么b肯定是等于20的,但這里卻不是這樣的,如果按照一般的思維的話,是下面這樣的:

如果按照這個(gè)邏輯的話,那么b肯定是等于20的,但這里是錯(cuò)誤的,所以我畫(huà)了個(gè)叉。
因?yàn)樽兞渴且粋€(gè)標(biāo)記,用來(lái)調(diào)用內(nèi)存中的值,當(dāng)我們將一個(gè)標(biāo)記賦值給另一個(gè)標(biāo)記的時(shí)候,應(yīng)該是讓其指向另一個(gè)標(biāo)記的內(nèi)存,而不是指向標(biāo)記。
按照這個(gè)原則,我們的思路應(yīng)該是這樣的:

也就是說(shuō)此時(shí)b應(yīng)該等于10,下面我們來(lái)試驗(yàn)一下是否正確:

驗(yàn)證正確,這個(gè)思路沒(méi)有問(wèn)題。
3.python中的垃圾回收機(jī)制
這個(gè)時(shí)候我們可能會(huì)有疑問(wèn),如果是下面這種情況會(huì)怎么樣:
a = 10 a = 20
按照我們之前建立的思維,a已經(jīng)指向了20了,那么剩下的那個(gè)10會(huì)怎么樣?
這就要說(shuō)起python中的垃圾回收機(jī)制了,python會(huì)按一定的規(guī)則回收內(nèi)存中的垃圾數(shù)據(jù)以釋放內(nèi)存空間。
Python內(nèi)存回收的基石是引用計(jì)數(shù),“當(dāng)一個(gè)對(duì)象的引用被創(chuàng)建或復(fù)制時(shí),對(duì)象的引用計(jì)數(shù)加1;當(dāng)一個(gè)對(duì)象的引用被銷毀時(shí),對(duì)象的引用計(jì)數(shù)減1”,如果對(duì)象的引用計(jì)數(shù)減少為0,將對(duì)象的所占用的內(nèi)存釋放。
python通過(guò)引用計(jì)數(shù),將引用次數(shù)為0的數(shù)據(jù)從內(nèi)存中清除,具體的回收時(shí)機(jī)不太清楚,可能是每隔一段時(shí)間回收一次。
簡(jiǎn)單的垃圾回收這這樣的,但垃圾回收的機(jī)制遠(yuǎn)比這要復(fù)雜許多,因?yàn)橛袝r(shí)候會(huì)出現(xiàn)循環(huán)引用的情況,這種時(shí)候,單純清除0次引用的還是不夠的,所以此時(shí)還有其他的算法來(lái)回收。
總結(jié)
以上就是本文關(guān)于python的變量與賦值詳細(xì)分析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:python好玩的項(xiàng)目—色情圖片識(shí)別代碼分享、Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的驗(yàn)證碼程序、Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式等,有什么問(wèn)題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Python編程深度學(xué)習(xí)計(jì)算庫(kù)之numpy
今天小編就為大家分享一篇關(guān)于Python編程深度學(xué)習(xí)計(jì)算庫(kù)之numpy,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
python 文件常用操作demo(讀寫(xiě) 打開(kāi)方式)
這篇文章主要為大家介紹了python 文件常用操作demo(讀寫(xiě) 打開(kāi)方式)及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
Python學(xué)習(xí)筆記之迭代器和生成器用法實(shí)例詳解
這篇文章主要介紹了Python學(xué)習(xí)筆記之迭代器和生成器用法,結(jié)合實(shí)例形式詳細(xì)分析了Python迭代器與生成器的功能、原理、定義及使用方法,需要的朋友可以參考下2019-08-08
Python實(shí)現(xiàn)正則表達(dá)式匹配任意的郵箱方法
今天小編就為大家分享一篇Python實(shí)現(xiàn)正則表達(dá)式匹配任意的郵箱方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
python被修飾的函數(shù)消失問(wèn)題解決(基于wraps函數(shù))
這篇文章主要介紹了python被修飾的函數(shù)消失問(wèn)題解決(基于wraps函數(shù)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
基于Python編寫(xiě)將文本轉(zhuǎn)換為語(yǔ)音的簡(jiǎn)易應(yīng)用
這篇文章主要介紹了如何使用Python編寫(xiě)一個(gè)簡(jiǎn)單的應(yīng)用程序,將文本轉(zhuǎn)換為語(yǔ)音,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下2023-08-08

