标签:机制 解释器 判断 == 空字符串 的区别 自动 占用 运算
与C不同,在python中是没有NULL,但存在相近意义的None。
None表示空值,它是一个特殊 Python 对象, None的类型是NoneType
>>> type(None) <class ‘NoneType‘>
None在 Python 解释器启动时自动创建, 解释器退出时销毁。
在一个解释器进程中只有一个 None 存在, 因为不可能有其他对象会使用 None 已占用的内存(它就是占了个坑)
所以只有: None is None and None == None
>>> None == 0 False >>> None == ‘ ‘ False >>> None == None True >>> None == False False
if a is None: pass
用指针来说
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
标签:机制 解释器 判断 == 空字符串 的区别 自动 占用 运算
原文地址:https://www.cnblogs.com/mika-blogs/p/10981239.html