python中的none類型


原文: https://www.cnblogs.com/mika-blogs/p/10981239.html

--------------------------------

與C不同,在python中是沒有NULL,但存在相近意義的None。

None表示空值,它是一個特殊 Python 對象, None的類型是NoneType

>>> type(None)
<class 'NoneType'>

None在 Python 解釋器啟動時自動創建, 解釋器退出時銷毀。
在一個解釋器進程中只有一個 None 存在, 因為不可能有其他對象會使用 None 已占用的內存(它就是占了個坑)
所以只有: None is None and None == None

  • None不支持任何運算也沒有任何內建方法
  • None和任何其他的數據類型比較永遠返回False
  • None有自己的數據類型NoneType,不能創建其他NoneType對象(它只有一個值None)
  • None與0、空列表、空字符串不一樣
復制代碼
>>> None == 0
False
>>> None == ' '
False
>>> None == None
True
>>> None == False
False
復制代碼
  • 可以將None賦值給任何變量,也可以給None值變量賦值
  • None是沒有像len,size等屬性的,要判斷一個變量是否為None,直接使用
if a is None:
    pass

 

結合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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM