TypeError es una de las varias excepciones estándar de Python. TypeError se genera cada vez que se realiza una operación en un tipo de objeto incorrecto o no compatible. Por ejemplo, usar el operador + (suma) en una string y un valor entero generará TypeError.
Ejemplos
Las causas generales por las que se genera TypeError son:
1. Operación no admitida entre dos tipos:
En el siguiente ejemplo, la variable ‘geek’ es una string y la variable ‘num’ es un número entero. El operador + (suma) no se puede usar entre estos dos tipos y, por lo tanto, se genera TypeError.
Python3
geek = "Geeks" num = 4 print(geek + num + geek)
Producción :
TypeError: must be str, not int
2. Llamar a un identificador no llamable:
En el siguiente código de ejemplo, la variable ‘geek’ es una string y no se puede llamar en este contexto. Dado que se llama en la declaración de impresión, se genera TypeError.
Python3
geek = "GeeksforGeeks" print(geek())
Producción :
TypeError: 'str' object is not callable
3. Tipo incorrecto de índice de lista:
En Python, los índices de lista siempre deben ser un valor entero. Dado que el valor de índice utilizado en el siguiente código es una string, genera TypeError.
Python3
geeky_list = ["geek", "GeeksforGeeks", "geeky", "geekgod"] index = "1" print(geeky_list[index])
Producción :
TypeError: list indices must be integers or slices, not str
4. Iterando a través de un identificador no iterativo:
En el siguiente código, el valor 1234.567890 es un número de coma flotante y, por lo tanto, no es iterativo. Obligar a Python a iterar en un identificador no iterativo generará TypeError.
Python3
for geek in 1234.567890: print(geek)
Producción :
TypeError: 'float' object is not iterable
Error de tipo de manejo
TypeErrors se generan principalmente en situaciones en las que el programador no puede verificar el tipo de objeto antes de realizar una operación en ellos. Se pueden manejar específicamente mencionándolos en el bloque de excepción. En el siguiente ejemplo, cuando se encuentra que uno de los índices es de un tipo incorrecto, el programa genera y maneja una excepción.
Python3
geeky_list = ["Geeky", "GeeksforGeeks", "SuperGeek", "Geek"] indices = [0, 1, "2", 3] for i in range(len(indices)): try: print(geeky_list[indices[i]]) except TypeError: print("TypeError: Check list of indices")
Producción :
Geeky GeeksforGeeks TypeError: Check list of indices Geek