000 Python常量與變數

2021-09-20 19:42:05 字數 3709 閱讀 9269

python常量與變數

昨天的文章雖然有插圖,但是乙個都沒有顯示出來,估計是天氣太熱,不願意露面的緣故吧。這些都不是事,暫且不表,今天再次發布與昨天相同的文章,主要為了彌補3個插圖。為了有更好的排版體驗及閱讀效果,小白還專門購買了pro版的markeditor及使用了七牛雲服務(小白也是夠狠的,下了血本了)。

python是一門強型別的動態語言。

字面常量,變數沒有型別,變數只是在特定的時間指向特定的物件而已,變數所指向的物件是有型別的。

變數:變數在賦值時被建立,它可以是任何物件的引用,但必須在引用前被賦值。

舉例來說:當我們如下賦值時:

>>> a = 3 # 給乙個物件3賦予變數a
對於上面的賦值,python將會明確的執行3個步驟來響應這個語句:

建立乙個物件代表值3;

如果不存在變數a,就建立變數a;

把變數a與新建立的物件3關聯。

變數隨著賦值操作出現的。變數和物件是被儲存在不同的記憶體空間中的。變數與物件通過指標相關聯。變數永遠指向物件且永不指向變數。隨著賦值a = 3語句的執行,變數a就變成了物件3的乙個引用。

變數與物件之間的鏈結在python中稱之為引用。也就是說,乙個引用也就是一種關聯,在記憶體中以指標的形式實現。

變數、物件與引用的區別:

+變數是python直譯器系統表中的一些條目, 它們是用來指向物件的。

+物件是一些列的被分配的記憶體, 有足夠的空間儲存與之相關的資料型別。

+引用自動地跟隨在變數與物件之間。

物件才有型別, 而變數沒有。乙個例子:

>>> a = 3 # a是乙個整型資料 

>>> a = 'spam' # 現在是乙個字串了 

>>> a = 1.23 # 現在是乙個浮點數了

在python中,事情工作的很簡單,再次強調:names沒有型別;只有物件有型別,而不是變數。

變數的命名規則:

只能包含字母、數字和下劃線

只能以字母或下劃線開頭

不能是python直譯器的保留字

接下來我們看兩個變數同時指向乙個物件的情況:

>>> a = 3 

>>> b = a

賦值完畢,它們在記憶體中的**為:

現在,假設我們再進行如下的賦值語句:

>>> a = 3 

>>> b = a 

>>> a = 'spam'

現在變數a指向的物件spam。然而變數b卻依然指向物件3。賦值意味著建立了新的物件。上面三句語句在記憶體中的**為:

接下來要看的是有一些物件會進行原地改變,那就是python的可變物件,包括列表,字典及集合。對於乙個支援原地改變的物件,我們需要知道共享引用,如果乙個改變會影響其他的物件。還是看個例子吧:

>>> l1 = [2, 3, 4] 

>>> l2 = l1

l1是乙個列表且包含2、3、4三個物件。列表中的元素通過它們的位置進行訪問,所以l1[0]指向物件2,它是列表l1的第乙個物件。當然列表也是乙個物件,就像其他的整數與字串。當進行上面的兩個賦值後,l1與l2都指向了同乙個共享的物件。

現在,我們進行如下的賦值:

>>> l1 = 24
這個賦值語句簡單地把l1指向了不同的物件;l2依然指向原來的列表。接下來我們進行一些改變:

>>> l1 = [2, 3, 4] # 乙個可變的物件 

>>> l2 = l1        # l2與l1指向了同樣的物件 

>>> l1[0] = 24     # 乙個原地改變的操作 

>>> l1             # l1已經改變了 

[24, 3, 4] 

>>> l2             # l2也是與l1相同 

[24, 3, 4]

上面的例子中,我們並沒有改變l1物件本身,只是改變了l1中的乙個物件。這種原地改變的操作的情況只出現在可變物件中。舉個字典的例子:

>>> d1 =  

>>> d2 = d1 

>>> d1  

>>> d2  

>>> d1['a'] = 'a' 

>>> d2 

我們可以使用copy的方法:

>>> l1 = [2, 3, 4] 

>>> l2 = l1[:]  # 製作l1的拷貝 

>>> l1[0] = 24 

>>> l1 [24, 3, 4] 

>>> l2          # l2並沒有改變 [2, 3, 4]

通過上面的例子我們發現,l1的改變並沒有影響l2,l2只是引用了l1的乙份拷貝,並不是原來的l1自身,也就說,l1與l2指向了兩個不同的記憶體空間。

接下來談論另外乙個話題,python會快取小的整數及小的字串。舉個例子吧:

>>> l = [1, 2, 3] 

>>> m = l      # m與l指向相同的物件 

>>> l == m     # 具有相同的值 

true 

>>> l is m     # 依然相同 

true 

>>> id(l) 

4338913608 

>>> id(m) 

4338913608

通過上面的例子,==判斷兩個引用的物件是否有相同的值;第二個操作符is是用來判斷物件id的,只有兩個names指向相同的物件,is==判斷物件是否相同更強壯。is只是簡單地比較兩個物件的指標。再看乙個例子:

>>> l = [1, 2, 3] 

>>> m = [1, 2, 3] # m與l指向不同的物件(賦值意味著產生新的物件) 

>>> l == m        # 具有相同的值 

true 

>>> l is m        # 但是是不同的物件 

false 

>>> id(l) 

4338913480 

>>> id(m) 

4338915208

接下來呢,我們看看對於小數字的操作是否不符合上面的預期:

>>> x = 42 

>>> y = 42  # x與y應該是兩個不同的物件 

>>> id(x) 

4297547872 

>>> id(y) 

4297547872 

>>> x == y 

true 

>>> x is y # but anyhow: 是快取在作祟! 

true 

# 使用個大的數字呢? 

>>> x = 1234567 

>>> y = 1234567 

>>> x == y 

true 

>>> x is y 

false 

>>> id(x) 

4336930640 

>>> id(y) 

4338529328

今天就給大家介紹到這裡,明天會接續講解運算子與表示式。

基礎 常量

python

python 變數與常量

變數 容器,裝的是可變的量 變數的作用 儲存資料到記憶體 為什麼要用變數 儲存資料方便後面引用 python 中的變數不需要宣告。每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立。num 10 在 python 中,變數就是變數,它沒有型別,我們所說的 型別 是變數所指的記憶體中物件的型別。...

python常量與變數

想要學習變數首先需要了解識別符號的命名規則 1 識別符號 命名規則 以數字,字母,下劃線構成,且不能以數字開頭2 變數 定義 程式執行的過程中,會改變的量,我們稱之為變數。賦值 識別符號 值 例 subject python achievement 90,95,100 subject,achieve...

python變數與常量

變數就是指可以變化的量,量指的是事物的狀態,比如人的年齡,性別,身高,體重 變數有三大組成部分 變數名,賦值符,變數值 變數值 待處理的資料我們在編寫程式的時候,目的就是要讓編寫出來的程式去處理各種各樣的資料,因此我們需要一些東西去儲存資料,獲取資料改變之後的新的資料,而這些東西就是變數原則 先定義...