Python TypeError: el objeto de función no es suscriptible

Salman Mehmood 21 junio 2023
  1. Corregir error de tipo de objeto de función en Python
  2. Corregir error de tipo de objeto de función con lista vacía en Python
Python TypeError: el objeto de función no es suscriptible

Este artículo analiza por qué recibimos un error que es “Error de tipo: el objeto ‘función’ no se puede subíndice” y cómo podemos corregir este error en Python.

Corregir error de tipo de objeto de función en Python

Si es un principiante en la programación, es posible que encuentre errores al ejecutar un programa. A veces, intenta solucionar este error, pero le resulta difícil porque no intenta comprender por qué se produce este error durante la ejecución.

Por ejemplo, supongamos que tenemos una lista de empleados y queremos envolverla dentro de la función para reutilizarla luego dentro de la clase o módulo. Cuando llamamos a esta función, obtenemos un error que dice Error de tipo: el objeto 'función' no es subíndice.

Código de ejemplo:

Employee_Name = ["Max", "Harry", "Ben", "Simon", "Thomas"]


def Employee_Name(n):
    for i in range(5):
        print(n[i])


Employee_Name(Employee_Name)

Producción :

TypeError: 'function' object is not subscriptable

En el script de Python anterior, repetimos la lista de elementos y el error ocurre porque pasamos una función dentro de la función en lugar de una lista.

La variable n contiene una función, y dentro del bucle, cuando intentamos acceder a un índice de la variable n, obtenemos el error porque no podemos acceder a un índice de un objeto que no es subíndice o iterable.

Los principiantes tienden a solucionarlo, pero otros pueden obtener un error diferente, como en el siguiente resultado.

Código de ejemplo:

def Employee_Name(n):
    for i in range(5):
        print(n[i])


Employee_Name = ["Max", "Harry", "Ben", "Simon", "Thomas"]

Employee_Name(Employee_Name)

Producción :

TypeError: 'list' object is not callable

Pensando que el error se puede corregir si se declara una lista después de definir la función aunque la función y la lista tengan el mismo nombre. Después de ejecutar el código, el usuario obtiene otro error.

La razón es que durante una declaración de variable, el nombre de la función Employee_Name se anula con una variable que es una lista, y no podemos llamar a una lista. La solución simple es nunca usar el mismo nombre con otro objeto que haya usado para una función.

Código de ejemplo:

def Employee_Name(n):
    for i in range(5):
        print(n[i])


Employee_Names = ["Max", "Harry", "Ben", "Simon", "Thomas"]

Employee_Name(Employee_Names)

Cambiamos el nombre de la variable Employee_Name a Employee_Names.

Producción :

Max
Harry
Ben
Simon
Thomas

Corregir error de tipo de objeto de función con lista vacía en Python

Otra razón es obtener el TypeError: 'function' object is not subscriptable cuando intentamos hacer una lista vacía de la lista por cualquier motivo. Veamos un ejemplo.

Código de ejemplo:

Empty_List = []


def Employee_Name(n):
    for i in range(5):
        Empty_List.append(n[i])

    return Empty_List


Employee_Names = ["Max", "Harry", "Ben", "Simon", "Thomas"]

print(Employee_Name[Employee_Names])

Producción :

TypeError: 'function' object is not subscriptable

Cuando llamamos a la función, debemos poner los corchetes de función de apertura y cierre ((función)) en el nombre de la función. Supongamos que le ponemos corchetes ("[función]"), lo que va en contra del comportamiento de una función para llamarla usando corchetes.

Algunos usuarios cometen otro error porque quieren una lista de una lista. Cuando intentan corregir eso dentro de los corchetes de apertura y cierre, pasan una lista entre corchetes y obtienen otro error.

Error de ejemplo:

Empty_List = []


def Employee_Name(n):
    for i in range(5):
        Empty_List.append(n[i])

    return Empty_List


Employee_Names = ["Max", "Harry", "Ben", "Simon", "Thomas"]

print(Employee_Name([Employee_Names]))

Producción :

IndexError: list index out of range

Una razón para obtener este error es pasar una lista de una lista con una longitud de 1, y su índice sale del rango cuando lo iteramos dentro del bucle for. La solución simple es que en lugar de usar corchetes dentro de la función ([Employee_Names]), necesitamos poner corchetes dentro de la variable Empty_List donde la devolvemos.

Código de ejemplo:

Empty_List = []


def Employee_Name(n):
    for i in range(5):
        Empty_List.append(n[i])

    return [Empty_List]


Employee_Names = ["Max", "Harry", "Ben", "Simon", "Thomas"]

print(Employee_Name(Employee_Names))

Producción :

[['Max', 'Harry', 'Ben', 'Simon', 'Thomas']]
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Artículo relacionado - Python Error