regresion predicciones modelos modelo metodos machine logistica lineal learning ejemplos ejemplo clasificacion algoritmo python python-2.7 python-3.x types

modelos - predicciones python



Ninguno Error/error de Python? (4)

Puedes probar:

>>> variable = None >>> isinstance(variable,type(None)) True >>> variable = True >>> isinstance(variable,type(None)) False

isinstance toma 2 argumentos isinstance(object, classinfo) Aquí, al pasar None , está configurando classinfo en None, de ahí el error. Necesitas pasar en el tipo.

En Python tienes el Singleton None , que actúa de manera bastante extraña en ciertas circunstancias:

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

En primer lugar, <type ''NoneType''> muestra que None no es un tipo, pero que NoneType es. Sin embargo, cuando ejecuta isinstance(a,NoneType) , responde con un error: NameError: name ''NoneType'' is not defined

Ahora, dado esto, si tiene una función con un valor predeterminado de entrada establecido en None y necesita verificar, debería hacer lo siguiente:

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

¿Cuál es la razón por la que no puedo hacer lo siguiente?

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

Solo busco una explicación detallada para poder entender mejor esto

Edición: buena aplicación

Digamos que quería usar isinstance para poder hacer algo si la variable es una variedad de tipos, incluido None :

if isinstance(variable,(None,str,float)): #do something


None es solo un valor de types.NoneType , no es un tipo.

Y el error es suficientemente claro:

TypeError: isinstance () arg 2 debe ser una clase , tipo o tupla de clases y tipos

De la docs :

None es el único valor de types.NoneType . None se usa con frecuencia para representar la ausencia de un valor, como cuando los argumentos predeterminados no se pasan a una función.

Puedes usar types.NoneType

>>> from types import NoneType >>> isinstance(None, NoneType) True

is operador también funciona bien:

>>> a = None >>> a is None True


None es un valor (instancia) y no un tipo. Como muestra el mensaje de error, isinstance espera que el segundo argumento sea un tipo.

El tipo de Ninguno es type(None) , o No se Nonetype si lo importa ( from types import NoneType )

Nota: la forma idiomática de hacer la prueba es variable is None . Corto y descriptivo.


None no es un tipo, es la instancia de singleton en sí, y el segundo argumento de isinstance debe ser un tipo, una clase o una tupla de ellos. Por lo tanto, necesita utilizar NoneType de types .

from types import NoneType print isinstance(None, NoneType) print isinstance(None, (NoneType, str, float))

True True

Aunque, a menudo me inclino a reemplazar isinstance(x, (NoneType, str, float)) con x is None or isinstance(x, (str, float)) .