《Python核心編程》第四章

4-1.Python對象。與所有Python對象有關的三個屬性是什麼?簡單描述一下。

答案:

三個屬性是身份,類型和值。

身份:每一個對象都有一個唯一的身份標識自己,任何對象的身份可以使用內建函數id()來得到。

類型:對象的類型決定了該對象可以保存什麼類型的值,可以進行什麼樣的操作,以及進行什麼樣 的規則。

值:對象表示的數據項。

4-2.類型。不可更改(immutable)指的是什麼?Python的哪些類型是可更改的(mutable)?哪些不是?

答案:

不可更改指的是對象的值不可以改變。Python中列表,字典是可更改的,數字,字符串,元組是不可更改的。

4-3.類型。哪些Python類型是按照順序訪問的?它們和映射類型的不同是什麼?

答案:

字符串,列表,元組是按照順序訪問的。序列類型是指容器內的元素按從0開始的索引順序訪問,一次可以訪問一個或者多個元素;而映射類型的元素無序存放,通過一個唯一的鍵來訪問。

4-4.type()。內建函數type()做什麼?type()返回的對象是什麼?

答案:

type()函數返回對象的類型信息,type()返回的對象是類型對象。

4-5.str()和repr()。內建函數str()和repr()之間的不同是什麼?哪一個等價於反引號(``)操作符?

答案:

str()函數得到的字符串可讀性好,輸出對用戶友好;repr()函數得到的字符串通常可以使用eval()重新獲得該對象,輸出對Python友好。

4-6.對象相等。你認爲type(a)==type(b)和type(a) is type(b)之間的不同是什麼?爲什麼會選擇後者?函數isinstance()與這有什麼關係?

答案:

前者是對象值的比較,後者是身份的比較。在運行期間,只有一個類型對象來表示整型類型,也就是說,type(a),type(b)都是同一個對象<type 'int'>,就不需要浪費時間比較他們的值了,直接比較身份就可以了。isinstance()函數也是用來判斷對象類型的,可以使用一個類型對象的元組作爲參數,不必寫多行if-elif-else代碼。

4-7.略。

4-8.列表和元組。列表和元組的相同點是什麼?不同點是什麼?

答案:

列表和元組的相同點:存儲模型都是容器,訪問模型都是順序訪問。

不同點是列表值可以更改,而元組值不可以更改。

4-9.實踐。給定以下賦值:

a=10

b=10

c=100

d=100

e=10.0

f=10.0

請問下列表達式輸出的是什麼,爲什麼?

(a) a is b

(b) c is d

(c) e is f

答案:

(a)(b)輸出True,(c)False。因爲整型對象和字符串對象是不可變對象,所以Python會很高效地緩存它們,這就會造成我們認爲Python應該創建新對象時,他卻沒有創建新對象的假象。Python僅僅緩存簡單整型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章