Pregunta

me pregunto, a menudo tengo archivos muy largo pitón y las importaciones tienden a apilar con bastante rapidez.

PEP8 dice que las importaciones deben hacerse siempre en el principio del archivo.


hacer todas las bibliotecas importadas se importan cuando se llama a una función codificada en el archivo? ¿O es que las llaman sólo las bibliotecas necesarias?

¿Tiene sentido que preocuparse por esto? ¿No hay ninguna razón para importar bibliotecas dentro de las funciones o clases que los necesitan?

¿Fue útil?

Solución

Cada vez Python realiza un sentencia de importación, se comprueba para ver si ese módulo ya se ha importado, y si no, lo importa. Por lo que las importaciones en la parte superior de su archivo se realizará tan pronto como su archivo se ejecuta o importado por otro módulo.

Hay una cierta por encima de esto, por lo que es generalmente mejor para mantener las importaciones en la parte superior de su archivo por lo que el costo es llevado cuidado de la delantera.

Otros consejos

El mejor lugar para las importaciones es en la parte superior de su archivo. Que documenta las dependencias en un solo lugar y hace que los errores de su ausencia aparecen antes. La importación en sí ocurre en realidad en el momento de la declaración import, pero esto rara vez importa mucho.

No es típico que usted tiene nada que ganar al no importar una biblioteca hasta que esté en una función o un método que lo necesita. (Nunca hay nada que ganar al hacerlo dentro del cuerpo de una clase.) Es raro que desea dependencias opcionales y aún más raro que esta es la técnica adecuada para conseguir que, sin embargo. Tal vez usted puede compartir un caso de uso convincente?

  

¿Tiene sentido que preocuparse   esto?

No

No hay razón para importar bibliotecas dentro de las funciones o clases que los necesitan. Es simplemente lento porque la declaración import tiene que comprobar para ver si se ha importado una vez, y darse cuenta de que ha sido importado.

Si pones esto en una función que se llama con frecuencia, puede perder algo de tiempo con toda la comprobación import.

Las importaciones ocurren cuando el módulo que contiene las importaciones es ejecutado o importados, no cuando las funciones se llaman.

Por lo general, yo no me preocuparía por eso. Si se encuentra con ralentizaciones, es posible que el perfil para ver si su problema está relacionado con esto. Si es así, se puede comprobar para ver si su módulo se divide en módulos más pequeños.

Pero si todos los archivos se están acostumbrando por el mismo programa, que acaba de terminar de importar todo de todos modos.

Si una función dentro de un módulo es el único que importar un otro módulo dado (supongamos que tiene una función de enviar tweets, sólo si alguna opción de configuración está activado), entonces tiene sentido importar ese módulo específico en la función.

Si no veo algunos perfiles de datos que demuestren lo contrario, mi suposición es que la sobrecarga de una declaración de importación en una función es completamente insignificante .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top