W Pythonie masz None
Singleton, który działa dość dziwnie w pewnych okolicznościach:Brak Python error/bug?
>>> 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
Więc najpierw, <type 'NoneType'>
wyświetlacze że None
nie jest typem, ale NoneType
jest. Jednak po uruchomieniu isinstance(a,NoneType)
, reaguje z błędem: NameError: name 'NoneType' is not defined
Teraz, biorąc pod uwagę to, czy masz funkcję z krytym domyślnie wejściowego ustawionym na None
i trzeba sprawdzić, należy wykonać następujące czynności:
if variable is None:
#do something
else:
#do something
co jest powodem, że nie mogę zrobić następujące zamiast:
if isinstance(variable,None): #or NoneType
#do something
else:
#do something
jestem po prostu szukasz szczegółowych wyjaśnień, więc mogę lepiej zrozumieć ten
Edit: dobra aplikacja
Powiedzmy chciałem użyć isinstance
tak, że mogę coś zrobić jeśli variable
jest wiele rodzajów, w tym None
:
if isinstance(variable,(None,str,float)):
#do something
'jeśli zmienna == Brak' jest anty-idiomatycznym pythonem. Standardowy sposób wykonania tego testu polega na tym, że 'None' jest singletonem: zamiast niego należy użyć' if variable is None'. –