Python深入理解① 一切皆對象(學習筆記)

靜態語言與動態語言

靜態語言:代碼在編譯的時候變量數據類型確定的,大部分靜態語言在編寫的過程中就要定義好數據類型
動態語言:代碼是運行的時候變量數據類型確定的,變量可直接賦值而不用定義類型

靜態語言優勢:可以很容易看出,靜態語言由於數據類型是定死的,使得它的優勢變現爲IDE更容易發現錯誤,對接第三方包的時候也更容易知道獲取數據的類型,不容易被不知道的情況下被賦值不同數據類型的數據,從而減少了一定侵害性
動態語言優勢:能夠減少定義代碼變量數據類型定義、更具有靈活性,可以把更多的精力花在業務邏輯上。

函數和類也是對象

具有以下幾個特性

  1. 可以直接賦值給一個變量
  2. 可以添加到集合對象中
  3. 可以作爲參數傳遞給函數
  4. 可以當做函數的返回值

注:()代表函數運行

Type、Object、Class的關係

a=1                          
b="abc"                      
print(type(1))              # <class 'int'>
print(type(int))            # <class 'type'>
print(type(b))              # <class 'str'>
print(type(str))            # <class 'type'>
print(type(object))         # <class 'type'>
print(type(type))           # <class 'type'>
print(type.__bases__)       # (<class 'object'>,)
print(object.__bases__)     # ()
print(int.__bases__)        # (<class 'object'>,)
print(str.__bases__)        # (<class 'object'>,)

由上面的輸出結果我們可以明顯看出 type->int->1, type->str->“abc”,即type->class->object,而type也是屬於type,type的基類是object,object基類是空集,int,str的基類也是object,因此可以用一張圖來表示。
在這裏插入圖片描述
Type把Type也能夠自己實例化,所以Python把一切都變成了對象,全部都繼承object這個基類。

Python中常見的內置變量

None: None對象全局只有一個

a = None
b = None
print(id(a) == id(b)) # True

數值類型:int、float、complex(複數)、bool
迭代類型:可以進行迭代、for循環
序列類型:list、bytes、array、tuple、str、array
映射類型:dict
集合類型:set、frozenset(不可修改set)
上下文管理類型:with
其他類型:模塊類型、函數類型、方法類型、class和實例、代碼類型、Object類型等等

發佈了16 篇原創文章 · 獲贊 6 · 訪問量 2627
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章