python中的變量與對象


一. 什么是變量

變量就是以前學習的數學中常見的等式x = 3(x是變量,3是變量值),在編程中,變量不僅可以是數學,還可以是任意數據類型

二. 變量的命名規則

變量名必須是英文大小寫、數字和_的組合,不能以數字開頭,不能是關鍵字

a            ✔

_name        ✔

Atest1       ✔

1a           ✘

那么,如何查看python中的關鍵字呢?

#導入模塊
import keyword

#打印關鍵字列表
print(keyword.kwlist)

結果: [
'False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

三. 變量、對象和引用

在python中,一切都是對象,一切都是對象的引用

舉個最簡單的例子:

a = 3

如圖所示,python將執行三個步驟來完成a = 3的賦值操作:

1. 創建也變量a

2. 創建一個對象(分配一塊內存),來存儲值3

3. 將變量與對象,通過指針連接起來,從變量到對象的連接稱之為引用(變量引用對象)

四. 類型屬於對象,而非變量

在python中,我們無需事先聲明變量的類型,變量類型是在運行過程中根據對象的類型自動決定的。

為了理解對象類型是如何使用的,請看我們對一個變量多次賦值后的結果:

a = 3                      #整型
a = 'spam'                 #字符串
a =  1.2.3                 #浮點型

在上面的例子中,a開始是一個整數,然后變成一個字符串,最后變成一個浮點數。看起來,a的類型發生了三次改變。

事實上,在python中,變量沒有類型,類型是屬於對象的。就像前面所說,a = 3,是變量a引用了對象3,而以上三條語句,實際上是變量a引用了不同類型的對象。

那么,對象的結構又是什么樣的?

如下圖所示,每個對象都包含了兩個頭部信息,一個是類型標志符,另一個是引用計數器。類型標志符標記了這個對象的類型,例如整數對象3,包含了值3和一個類型標志符(嚴格意義上,它是一個指向int的對象的指針),這就告訴python,這是一個整數對象。而'spam'字符串對象的標志符指向了一個字符串類型。由於對象記錄了它們的類型,變量的類型就沒有必要了。

五. 對象的垃圾回收

 當變量a重新賦值時,它的前一個引用會發生什么變化呢?

a = 3
a = 'spam'

答案是,當變量a重新賦值給字符串'spam'時,它的上一個引用對象3馬上被回收了,對象的空間自動放入自由內存空間池,等待后來的對象使用。

在python內部是這樣實現這一功能的:它在每個對象內部分配了一個計數器,計數器記錄了當前指向該對象的引用的數目,一旦這個計算器被設置為0(即這個對象沒有被任何變量引用),該對象的內存空間就會自動回收。這種自動回收對象空間的機制就叫垃圾收集,它的最大好處是,可以再腳本中任意使用對象而不需要考慮釋放內存空間,在程序運行時,python將會清理那些不再使用的空間。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM