以下程式示範
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | a = 12 b = 12 c = 22 if a is b: print ( "a is b" ) if a is c: print ( "a is c" ) # 《程式語言教學誌》的範例程式 # 檔名:expr16.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

由此例可見出, a 與 b 雖然是不同的整數變數 (variable) ,但內含數值 (value) 相同,對 Python 而言,等於只建立一個整數 12 的物件,而 a 與 b 共同連結到這個物件。這樣的情況對字串 (string) 也受用,因為字串是不可變的 (immutable) ,因此相同內容的字串也會是相同的物件。
is 也可以和 not 連用,可判斷兩個是否為不同物件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | a = 12 b = 12 c = 22 if a is not b: print ( "a is not b" ) if a is not c: print ( "a is not c" ) # 《程式語言教學誌》的範例程式 # 檔名:expr17.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

但是 is 與 is not 的使用需注意一點,對於可變 (mutable) 的資料型態,例如串列 (list) 就算有相同的內容,實際上仍會是不同的物件,例如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | a = [] b = [] if a is b: print ( "a is b" ) if a is not b: print ( "a is not b" ) # 《程式語言教學誌》的範例程式 # 檔名:expr18.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

這是因為不可變的資料型態 (data type) ,一旦建立該物件後,內容不可再做變更,因此 Python 處理這方面只建立單一的物件,以節省記憶體空間,而可變的資料型態,由於內容可以再做變更,因此無論建立多少相同內容的物件,這都會在記憶體上是不同的物件。
中英文術語對照 | |
---|---|
關鍵字 | keyword |
物件 | object |
函數 | function |
變數 | variable |
數值 | value |
字串 | string |
不可變的 | immutable |
可變 | mutable |
串列 | list |
資料型態 | data type |
沒有留言:
張貼留言