深入理解Python 中的特殊常量None

2021-10-19 08:31:25 字數 1931 閱讀 3112

false 不同,它不表示 0,也不表示空字串,而表示沒有值,也就是空值。

none 有自己的資料型別,我們可以在 idle 中使用 type() 函式檢視它的型別,執行**如下:

>>

>

type

(none

)<

class

'nonetype'

>

none的定義如下:

class

nonetype

(object

)| methods defined here:

| __bool__(self,/)

| self !=0|

| __repr__(self,/)

| return repr

(self).|

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

--| static methods defined here:

| __new__(

*args,

**kwargs)

from builtins.

type

none 是 nonetype 資料型別的唯一值(其他程式語言可能稱這個值為 null、nil 或 undefined),也就是說,我們不能再建立其它 nonetype 型別的變數,但是可以將 none 賦值給任何變數。如果希望變數中儲存的東西不與任何其它值混淆,就可以使用 none。

另外,對於所有沒有 return 語句的函式定義,python 都會在末尾加上 return none,使用不帶值的 return 語句(也就是只有 return 關鍵字本身),那麼就返回 none。

none在 python 直譯器啟動時自動建立, 直譯器退出時銷毀。

在乙個直譯器程序中只有乙個 none 存在, 因為不可能有其他物件會使用 none 已占用的記憶體(它就是佔了個坑)

none和任何其他的資料型別比較永遠返回false

none有自己的資料型別nonetype,不能建立其他nonetype物件(它只有乙個值none)

none與0、空列表、空字串不一樣

結合is和== 說明none和空列表、空字串的區別

用指標來說

is: 指向同一記憶體位址

==: 指向的記憶體位址中的內容是相同的

a =

list()

b =[

]print

(a == b)

# true

print

(a is b)

# false

c ="abc"

d ="abc"

print

(c == d)

# true 字串池

print

(c is d)

# true

此時為 list() 和 相當於各自分配了一次記憶體,所以 a is not b,但是 各自分配的記憶體中的內容是一樣的,故而 a == b。

c 和 d 指向同乙個記憶體位址(字串池、引用計數機等機制)所以 c is d,c 和 d 指向的記憶體中存的內容也是相同的(「abc」),所以 c == d。

而 none,可以認為只是是記憶體中不同於其他的一塊記憶體空間,a b c d 都有各自的指向,所以不是指向 none,故而 a b c d is not none,且none是唯一的,自然 a b c d != none

python深入 Python的深入理解

處理檔案和目錄 python 3 帶有乙個模組叫做 os,代表 作業系統 operating system os 模組 包含非常多的函式用於獲取 和修改 本地目錄 檔案程序 環境變數等的資訊。python 盡最大的努力在所有支援的作業系統上提供乙個統一的api,這樣你就可以在保證程式能夠在任何的計算...

深入理解python中的None

在python中判斷乙個物件是否為空時,我曾經這樣寫 list iflist is not none print list is s list else print list is null 列印結果為 is 從上面的例子可以看出list為空應該列印的是 list is null 但是實際的結果不是...

Python的深入理解

處理檔案和目錄 python 3 帶有乙個模組叫做 os,代表 作業系統 operating system os 模組 包含非常多的函式用於獲取 和修改 本地目錄 檔案程序 環境變數等的資訊。python 盡最大的努力在所有支援的作業系統上提供乙個統一的api,這樣你就可以在保證程式能夠在任何的計算...