Keine Python-Fehler/bug?

In Python Sie haben die None singleton, das wirkt ziemlich seltsam, unter bestimmten Umständen:

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

Also erstmal off, <type 'NoneType'> zeigt, dass None ist nicht eine Art, aber das NoneType ist. Doch wenn Sie laufen isinstance(a,NoneType), antwortet er mit einem Fehler: NameError: name 'NoneType' is not defined

Nun, angesichts dieser, wenn Sie eine Funktion mit einer Eingabe Standardwert eingestellt None, und müssen überprüfen möchten, führen Sie die folgenden:

if variable is None:
    #do something
else:
    #do something

was ist der Grund dafür, dass ich nicht den folgenden statt:

if isinstance(variable,None): #or NoneType
    #do something
else:
    #do something

Ich bin gerade auf der Suche für eine ausführliche Erklärung, so kann ich besser verstehen, diese

Edit: gute Anwendung

Können sagen, ich wollte isinstance so, dass ich etwas tun kann, wenn variable ist eine Vielzahl von Arten, einschließlich None:

if isinstance(variable,(None,str,float)):
    #do something
  • if variable == None ist anti-idiomatic Python. Der standard-Weg, um diesen test zu tun ist durch die Nutzung der Tatsache, dass None ist ein singleton: verwenden Sie if variable is None statt.
InformationsquelleAutor Ryan Saxe | 2013-06-19
Schreibe einen Kommentar