以下程式示範
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 |
沒有留言:
張貼留言