關於Python中的None
注意到None這個類型是在做一道Python題目時,要求說如果傳進函數的字符串是“None”則返回False,糟糕的是我並不知道如何判斷是否是“None”。
>>> a = []
>>> type(a)
<class 'list'>
>>> b = ''
>>> type(b)
<class 'str'>
>>> c = None
>>> type(c)
<class 'NoneType'>
可以看到,空列表與空字符串都是有類型的,分別為 ‘list’ 與 ‘str’ ,None也是有類型的,為 ‘NoneType’,就是沒有類型。我們知道,在Python中一切皆對象,每個對象由:標識(identity)、類型(type)、值(value)組成。
1.標識用於唯一標識對象,通常對應於對象在計算機內存中的地址。使用內置函數id(obj)可返回對象obj的標識。
2.類型用於表示對象存儲的“數據”的類型。類型可以限制對象的取值范圍以及可執行的操作。可以使用type(obj)獲得對象的所屬類型。
3.值表示對象所存儲的數據的信息。使用print(obj)可以直接打印出值。
對象的本質就是:一個內存塊,擁有特定的值,支持特定類型的相關操作。
上述代碼中c的類型為NoneType,對象“c”沒有值。輸出上述代碼中的a、b、c的值,如下所示。
>>> print(a)
[]
>>> print(b)
>>> print(c)
None
回到原點,如何判斷一個對象是否為None呢?可以通過布爾值來判斷,空列表、空字符串、None的布爾值均為False,非空列表、字符串的布爾值則為True。
>>> a = []
>>> b = ''
>>> c = None
>>> bool(a)
False
>>> bool(b)
False
>>> bool(c)
False
>>> a.append(1)
>>> a
[1]
>>> bool(a)
True
>>> b = b + '2'
>>> b
'2'
>>>bool(b)
True
在實際寫代碼時,可以通過if…else…來判斷。
a = None
if a:
print("hiahiahia~")
else:
print("wuwuwu~")