在python核心程式設計第四章中,p69在優化下面這段**時提出了:物件值比較vs物件身份比較
在執行時期,只有乙個型別物件來表示整形型別。也就是說type(0),type(42),type(-100)都是同乙個物件
如果他們是同乙個物件,我們為什麼還要浪費時間去獲得並比較他們的值呢?所以比較物件本身是乙個更好的方案。
所以將
if type(num) == types.inttype
改進為
if type(num) is types.inttype
一開始沒看懂這句話的意思,後來做了如下嘗試,大概了解了。
type(0)是'int',type(1)也是'int'。所以他們的id都是506039200l,所以我們在比較的時候就不必去獲取他們的值value,而是直接比較他們的身份即id就好了。
所以減少了獲取值的這一過程,使得程式得到了優化。
is判斷的是a物件是否就是b物件,是通過id來判斷的。
==判斷的是a物件的值是否和b物件的值相等,是通過value來判斷的。
我們可以用如下**來驗證一下
效果還是很明顯的。
python核心程式設計 python物件
一 什麼是python物件 在python中,構造的任何型別的值都是乙個物件。比如乙個整數型別的值,乙個字串,乙個列表等,都可以看做是物件。所有的物件分為三部分 1 身份。每個物件都有個標識自己的id。可用內建函式id 檢視 2 型別。可用type 檢視 3 值。物件用來存放資料,當然其最主要的資料...
關於Windows核心程式設計中的核心物件
對核心物件的理解。何為核心物件 訪問令牌物件,事件物件,檔案物件,檔案對映物件,i o 完成埠物件,作業物件,郵件槽 mailslot 物件,互斥量物件 mutex 管道 pipe 物件,程序物件,信 號量 semaphore 物件,執行緒物件,可等待的計時器 waitable timer 物件,以...
WINDOWS核心程式設計 核心物件
今天想把看的第三章的心得寫下來。這章主要介紹了核心物件。在windows中,核心物件是由作業系統來管理,儘管使用者能夠建立它,但是在建立之後,使用者對該核心物件的操作都是委託給作業系統。通常使用者建立和使用的物件分為 使用者物件 如 hicon createicon prama gdi物件函式以及核...