Python中的Null是什么?
在知乎上遇到一個問題,說:計算機中的「null」怎么讀?
null正確的發音是/n^l/,有點類似四聲‘納兒’,在計算機中null是一種類型,代表空字符,沒有與任何一個值綁定并且存儲空間也沒有存儲值。
Python中其實沒有null這個詞,取而代之的是None對象,即特殊類型NoneType,代表空、沒有。
None不能理解為0,因為0是有意義的,而None是一個特殊的空值:
>>> NoneType
NameError: name 'NoneType' is not defined
>>> type(None)
NoneType
None也不能理解為空字符'',因為空字符的類型是字符串:
>>>type('')
<class ''str'>
雖然表示空,但None是一個具體的Python對象,這和null含義不一樣。
在Python中返回None:
>>> def has_no_return():
pass
>>> has_no_return()
>>> print(has_no_return())
None
你可以使用 Python 的標識函數id()檢查 None 的唯一性,它返回某一對象的唯一標識符,如果兩個變量的 id 相同,那么它們實際上指向的是同一個對象:
>>> NoneType = type(None)
>>> id(None)
10748000
>>> my_none = NoneType()
>>> id(my_none)
10748000
>>> another_none = NoneType()
>>> id(another_none)
10748000
>>> def function_that_does_nothing(): pass
>>> return_value = function_that_does_nothing()
>>> id(return_value)
10748000
在Python中,None的用處有很多,比如作為變量初始值、作為函數默認參數、作為空值等等。
變量初始值:
>>> print(bar)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'bar' is not defined
>>> bar = None
>>> print(bar)
None
函數默認參數:
def bad_function(new_elem, starter_list=[]):
starter_list.append(new_elem)
return starter_list
空值:
>>> class DontAppend: pass
>>> def good_function(new_elem=DontAppend, starter_list=None):
if starter_list is None:
starter_list = []
if new_elem is not DontAppend:
starter_list.append(new_elem)
return starter_list
>>> good_function(starter_list=my_list)
['a', 'b', 'c', 'd', 'e']
>>> good_function(None, my_list)
['a', 'b', 'c', 'd', 'e', None]
總得來說,None是一個對象,而null是一個類型。
Python中沒有null,只有None,None有自己的特殊類型NoneType。
None不等于0、任何空字符串、False等。
在Python中,None、False、0、””(空字符串)、、()(空元組)、{}(空字典)都相當于False。