以下程式示範
a = 12
b = 12
c = 22
if a is b:
print("a is b")
if a is c:
print("a is c")
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:expr16.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月 執行結果如下

由此例可見出, a 與 b 雖然是不同的整數變數 (variable) ,但內含數值 (value) 相同,對 Python 而言,等於只建立一個整數 12 的物件,而 a 與 b 共同連結到這個物件。這樣的情況對字串 (string) 也受用,因為字串是不可變的 (immutable) ,因此相同內容的字串也會是相同的物件。
is 也可以和 not 連用,可判斷兩個是否為不同物件
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")
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:expr17.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月 執行結果如下

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

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