在Python你有None
單,其作用非常奇怪在某些情況下:無Python錯誤/錯誤?
>>> a = None
>>> type(a)
<type 'NoneType'>
>>> isinstance(a,None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
所以第一關,<type 'NoneType'>
顯示該None
不是一個類型,但NoneType
是。然而,當你運行isinstance(a,NoneType)
,它有一個錯誤響應:NameError: name 'NoneType' is not defined
現在,鑑於這一點,如果你有一個輸入的默認設置爲None
的函數,需要檢查,你會做以下幾點:
if variable is None:
#do something
else:
#do something
什麼是我不能做以下代替的原因:
if isinstance(variable,None): #or NoneType
#do something
else:
#do something
我只是尋找一個詳細的解釋,所以我可以更好地理解這個
編輯:良好的應用
可以說,我想用isinstance
,這樣我可以做一些事情,如果variable
是多種類型,包括None
:
if isinstance(variable,(None,str,float)):
#do something
'if variable == None' is anti-idiomatic Python。做這個測試的標準方法是利用'None'是一個單獨的事實:使用'if變量爲None'來代替。 –