str numeros nombres letras float declarar convertir caracter asignaciones python list

numeros - TypeError: el objeto ''list'' no se puede llamar en python



nombres de variables en python (4)

Soy novato de Python y sigo un tutorial. Hay un ejemplo de list en el tutorial:

example = list(''easyhoss'')

Ahora, en el tutorial, example= [''e'',''a'',...,''s''] . Pero en mi caso me sale el siguiente error:

>>> example = list(''easyhoss'') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: ''list'' object is not callable

Por favor dime donde estoy equivocado Busqué TAN this pero es diferente.


Es posible que haya usado el nombre integrado "lista" para una variable en su código. Si está utilizando el bloc de notas Jupyter, a veces incluso si cambia el nombre de esa variable de "lista" a algo diferente y vuelve a ejecutar esa celda, es posible que reciba el error. En este caso es necesario reiniciar el kernal. Para asegurarse de que el nombre haya cambiado, haga clic en la palabra ''lista'' cuando esté creando un objeto de lista y presione Shit + Tab, y verifique si Docstring lo muestra como una lista vacía.


Para mí fue un servidor de matraz que devolvió algunos arrays de videos (que esperaba tener en formato json ...)

añadiendo json.dumps(videos) solucionado este problema


Parece que has seguido la list nombres integrada por un nombre de instancia en algún lugar de tu código.

>>> example = list(''easyhoss'') >>> list = list(''abc'') >>> example = list(''easyhoss'') Traceback (most recent call last): File "<string>", line 1, in <module> TypeError: ''list'' object is not callable

Creo que esto es bastante obvio. Python almacena los nombres de objetos (las funciones y las clases también son objetos) en los diccionarios (los espacios de nombres se implementan como diccionarios), por lo que puede volver a escribir casi cualquier nombre en cualquier ámbito. No aparecerá como un error de algún tipo. Será mejor que uses un IDE (por ejemplo, una versión gratuita de PyCharm o Atom con complementos de Python) que resalte el sombreado de nombres.

Editar . Gracias a sus preguntas adicionales, creo que vale la pena contar con una cobertura adicional sobre los elementos integrados y el alcance. Como sabrán, Python enfatiza que "los casos especiales no son lo suficientemente especiales como para romper las reglas". Y hay un par de reglas detrás del problema que has enfrentado.

  1. Espacios de nombres . Python soporta espacios de nombres anidados. Teóricamente puedes anidar interminablemente espacios de nombres. Como ya he mencionado, los espacios de nombres son básicamente diccionarios de nombres y referencias a los objetos correspondientes. Cualquier módulo que crees obtiene su propio espacio de nombres "global". De hecho, es solo un espacio de nombres local con respecto a ese módulo en particular.

  2. Alcance Cuando hace referencia a un nombre, el tiempo de ejecución de Python lo busca en el espacio de nombres local (con respecto a la referencia) y, si tal nombre no existe, repite el intento en un espacio de nombres de nivel superior. Este proceso continúa hasta que no queden espacios de nombres superiores. En ese caso obtienes un NameError . Las funciones y clases integradas residen en un espacio de nombres de alto orden especial __builtins__ . Si declara una variable llamada list en el espacio de nombres global de su módulo, el intérprete nunca buscará ese nombre en un espacio de nombres de nivel superior (es decir, __builtins__ ). De manera similar, suponga que crea una variable var dentro de una función en su módulo y otra variable var en el módulo. Luego, si hace referencia a var dentro de la función, nunca obtendrá la var global, porque hay una var en el espacio de nombres local; el intérprete no tiene necesidad de buscarla en otra parte.

Aquí hay una simple ilustración.

>>> example = list("abc") # Works fine # Creating name "list" in the global namespace of the module >>> list = list("abc") >>> example = list("abc") Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: ''list'' object is not callable # Python looks for "list" and finds it in the global namespace. # But it''s not the proper "list". # Let''s remove "list" from the global namespace >>> del list # Since there is no "list" in the global namespace of the module, # Python goes to a higher-level namespace to find the name. >>> example = list("abc") # It works.

Entonces, como se ve, no hay nada especial en las incorporaciones de Python. Y tu caso es un mero ejemplo de reglas universales.

PD

Cuando inicias una sesión interactiva de Python, creas un módulo temporal.


Si está en una sesión interactiva y no desea reiniciar, puede eliminar el seguimiento con

del list