Python invocable

Los mòdulos Python son confusos, especialmente cuando define los suyos propios. " TypeError: " mòdulo " el objeto no es invocable " es uno de los errores más comunes que cometen los desarrolladores de Python cuando trabajan con clases.

En esta guìa, hablamos sobre lo que significa este error y por qué surge. Analizamos un fragmento de còdigo de ejemplo para ayudarlo a superar este error. ¬°Comencemos!

El problema: TypeError: " module " el objeto no es invocable

Cualquier archivo de Python es un mòdulo siempre que termine en la extensiòn " .py & rdquo ;.

Mòdulos son una parte crucial de Python porque te permiten definir funciones, variables y clases fuera de un programa principal. Esto significa que puede dividir su còdigo en varios archivos y categorizarlo de manera más efectiva.

Los mòdulos deben importarse de cierta manera. De lo contrario, Python devuelve un error:

Esto sucede cuando intenta importar un mòdulo como una funciòn.

Un escenario de ejemplo

Defina un mòdulo llamado " pasteles & rdquo ;. Este mòdulo contiene una funciòn: read_file. La funciòn read_file leerá el contenido de un archivo de texto.

Nuestro nombre de archivo determina el nombre de nuestro mòdulo. Debido a que queremos que nuestro mòdulo se llame " pasteles & rdquo ;, escribimos nuestro còdigo en un archivo llamado cakes.py:

El 81% de los participantes dijeron que se sentìan más seguros acerca de sus perspectivas laborales de tecnologìa después asistiendo a un campo de entrenamiento. Asòciese a un bootcamp hoy mismo.

El graduado promedio de un bootcamp pasò menos de seis meses en la transiciòn profesional, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Esta funciòn lee el contenido de un archivo llamado " cakes.txt & rdquo ;. Luego, recorre cada lìnea de texto en el archivo y agrega cada lìnea a una lista llamada " all_cakes & rdquo ;.

El replace () se utiliza para reemplazar cualquier carácter de lìnea nueva (" ") con un valor vacìo. Esto elimina todas las lìneas nuevas. Devolvemos " all_cakes " al final de nuestra funciòn.

Ahora, abra un archivo llamado app.py y pegue este còdigo:

Este còdigo utiliza nuestro mòdulo " pasteles " para leer el contenido del " cakes.txt & rdquo ; archivo. Luego imprime todos los pasteles que la funciòn ha encontrado en el archivo.

Ejecutemos nuestro còdigo:

Nuestro còdigo devuelve un error.

La soluciòn

Echemos un vistazo a declaraciòn de importaciòn en nuestro archivo app.py:

Importamos el mòdulo " tortas & rdquo ;. Este c contiene todas las variables, clases y funciones que declaramos en el archivo " cakes.py " archivo.

Ahora, veamos nuestra siguiente lìnea de còdigo:

Aunque los " pasteles " mòdulo solo contiene una funciòn, no especificamos cuál es esa funciòn. Esto confunde a Python porque no sabe con qué funciòn deberìa trabajar.

Para resolver este error, llamamos al nombre de la funciòn a la que queremos hacer referencia en lugar del mòdulo en sì:

Let & rsquo ; s intente ejecutar nuestro còdigo nuevamente:

Nuestro còdigo devuelve correctamente la lista de pasteles.

En nuestro archivo app.py, llamamos cakes.read_file ().

Python mira el archivo " cakes.py " donde nuestros " pasteles " El mòdulo se almacena y localiza la funciòn read_file () . Luego, Python ejecuta esa funciòn .

Asignamos el resultado de la funciòn read_file () a una variable llamada " cake_list & rdquo ;. Luego, imprimimos esa lista en la consola.

Alternativamente, importe la funciòn read_file directamente a nuestro programa:

Nuestro còdigo devuelve:

"Career Karma entrò en mi vida cuando más lo necesitaba y rápidamente me ayudò a combinar con un bootcamp. ¬°Dos meses después de graduarme, encontré el trabajo de mis sue√±os que se alineaba con mis valores y metas en la vida!"

Venus, ingeniero de software de Rockbot

Nuestro còdigo ejecuta la funciòn read_file () de " cakes " mòdulo. En este ejemplo, importamos los " pasteles " mòdulo. En lugar de hacerlo, importamos una funciòn de " tortas " module: read_file.

Observe que cuando importamos read_file, ya no necesitamos usar cakes.read_file () para llamar a nuestra funciòn. Usamos read_file ( ) porque importamos la funciòn read_file () directamente en nuestro còdigo.