python核心教程_python核心教程--第四章
第四章講的是python對象。
4.1 python對象
所有的python對象都擁有三個特性:身份,類型和值
身份:
每一個對象都有一個唯一的身份標識自己,任何對象的身份可以使用內建函數id()來得到。這個值可以被認為是該對象的內存地址。
類型:
對象的類型決定了該對象可以保存什么類型的值,可以進行什么樣的操作,以及遵循什么樣的規則。我們可以使用type()查看python對象的類型
值:
對象表示的數據項
4.3.1 類型對象和type類型對象
類型是個對象,雖然有點奇特。對象的一系列固有行為和特性必須事先定義好。從這個角度看,類型正式保存這些信息的最佳位置。既然可以描述浙西信息,那么類型肯定不是簡單的一個字符串,而是一個復雜的對象。
我們來看看:
>>> class Foo:
"this is a class"
pass
>>> type(Foo)
>>> type("hello world")
就如Ruby里面一切都是對象一樣(純粹的面向對象語言),python也是一個面向對象的語言,只是沒那么純罷了。
4.4 內部類型--(備注:不太理解)
4.4.1 代碼對象
代碼對象是編譯過的python源代碼片段,它是可執行對象。通過調用內建函數compile()可以得到代碼對象。代碼對象可以被exec命令或eval()內建函數來執行。
代碼對象本身不包含任何執行環境信息,它是用戶自定義函數的核心,在被執行時動態獲得上下文。(事實上代碼對象是函數的一個屬性)一個函數除了有代碼對象屬性以外,還有一些其他函數必須的屬性,包括函數名,文檔字符串,默認參數,及全局命名空間等等。
4.4.2 幀對象
幀對象表示python的執行棧幀。幀對象包含python解釋器在運行時所需要知道的所有信息。它的屬性包括指向上一幀的鏈接,正在被執行的代碼對象,本地及全局名字空間字典以及當前指令等。每次函數調用產生一個新的幀,每一個幀對象都會相應創建一個C棧幀。用到幀對象的一個地方是跟蹤記錄對象。
4.4.3 跟蹤記錄 對象
當你的代碼出錯時,python就會引發一個異常。如果異常未被捕獲和處理,解釋器就會推出腳本運行,顯示類似下面的診斷信息:
>>> 1 / 0
Traceback (most recent call last):
File "", line 1, in
1 / 0
ZeroDivisionError: integer division or modulo by zero
當異常發生時,一個包含針對異常的棧跟蹤信息的跟蹤記錄對象被創建。如果一個異常有自己的處理程序,處理程序就可以訪問這個跟蹤記錄對象。
4.4.4 切片對象,4.4.5省略對象 4.4.6XRange對象
瘋狗一般的往下看,因為發現這章的內容有點無趣,結果就到了習題了。
4–1. Python 對象。與所有Python 對象有關的三個屬性是什么?請簡單的描述一下。
所有的python對象都擁有三個特性:身份,類型和值
身份:
每一個對象都有一個唯一的身份標識自己,任何對象的身份可以使用內建函數id()來得到。這個值可以被認為是該對象的內存地址。
類型:
對象的類型決定了該對象可以保存什么類型的值,可以進行什么樣的操作,以及遵循什么樣的規則。我們可以使用type()查看python對象的類型
值:
對象表示的數據項
4–2. 類型。不可更改(immutable)指的是什么?Python 的哪些類型是可更改的(mutable),哪些不是?
可變類型: 列表,字典
不可變類型:數字,字符串,元祖
4–3. 類型。哪些Python 類型是按照順序訪問的,它們和映射類型的不同是什么?
順序訪問:字符串,列表,元祖
映射類型不是順序訪問的,而是通過關鍵字來訪問,相當于key--value
4–4. type()。內建函數type()做什么?type()返回的對象是什么?
顯示對象的類型。type()返回的對象是一個type()對象
4–4. str() 和 repr()。內建函數str()與repr()之間的不同是什么?哪一個等價于反引號(``)運算符?。
repr()等價于反引號。repr適合處理數據,而str適合輸出吧。
4–6. 對象相等。您認為type(a) == type(b)和type(a) is type(b)之間的不同是什么?為什么會選擇后者?函數isinstance()與這有什么關系?
前者比較的是對象的值,而后者比較的是對象本身。 可以用isinstance來代替。
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
我個人猜測是:True, True, False,可惜被我猜中了。因為小整型不會新建一個對象嘛,而float則一定會。
總結
以上是生活随笔為你收集整理的python核心教程_python核心教程--第四章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java getipaddress_教你
- 下一篇: 高中必背88个数学公式_高中数学:必修+