Python Auto Importing
(4)
En Python, las personas generalmente evitan las importaciones de autos, simplemente porque no vale la pena el esfuerzo. Puede eliminar ligeramente los costos de inicio, pero de lo contrario, no hay (o no debería haber) un efecto significativo. Si tiene módulos que son caros de importar y hace muchas cosas que no necesita hacer, reescriba el módulo en lugar de demorarlo.
Dicho esto, no hay nada intrínsecamente malo con las importaciones de automóviles. Debido a la naturaleza del proxy, puede haber algunas fallas (por ejemplo, cuando se mira una cosa que aún no se ha importado). Varias bibliotecas de importación automática están flotando alrededor.
Posible duplicado:
AUTOLOAD de Perl en Python ( getattr en un módulo)
Vengo de un entorno de PHP e intento aprender Python, y quiero asegurarme de hacer las cosas a la "manera de Python" en lugar de cómo me he desarrollado antes.
Mi pregunta proviene del hecho de que en PHP5 puede configurar su código, por lo que si intenta llamar a una clase que no existe en el espacio de nombres, primero se ejecutará una función que cargará la clase y le permitirá continuar como si ya estaban cargados. las ventajas de esto es que las clases no se cargaron a menos que se llamaran, y no tenía que preocuparse por cargar las clases antes de usarlas.
En Python, hay mucho énfasis en la declaración de importación, ¿es una mala práctica intentar un truco de importación automática con Python para aliviar la necesidad de una declaración de importación? He encontrado este módulo que ofrece importación automática, sin embargo, no sé si esa es la mejor manera de hacerlo, o si la importación automática de módulos es algo que se recomienda, ¿no crees?
Las importaciones tienen al menos otros dos propósitos importantes además de hacer que los módulos o contenidos de los módulos estén disponibles:
- Sirven como una especie de declaración de intención: "este módulo usa servicios de este otro módulo" o "este módulo usa servicios que pertenecen a cierta clase"; por ejemplo, si está realizando una revisión de seguridad para el código de manejo de socket, puede comenzar mirando solo los módulos que importan
socket(u otros módulos relacionados con la red) - Las importaciones sirven como un proxy para la complejidad de un módulo. Si se encuentra con docenas de líneas de importación, puede ser el momento de reconsiderar su separación de preocupaciones dentro del módulo, o dentro de su aplicación en general. Esta es también una buena razón para evitar las
from foo import *tipo "from foo import *".
Podrías importar automáticamente los módulos, pero lo más que siempre he necesitado importar fue de unos 10, y eso fue después de que inserté las funciones en la parte superior del programa original. No importará mucho, y los nombres son muy fáciles de recordar.
Si está aprendiendo Python y quiere hacer las cosas de la manera Python, simplemente importe los módulos. Es muy inusual encontrar autoimportaciones en código Python.