Veo un patrón común con los módulos de Python. A veces __init__.py
importa sus submódulos:¿Es una buena práctica para un módulo importar de manera recursiva sus submódulos?
P. ej.
mymod/
__init__.py:
from . import subm1, subm2
__all__ = ['subm1', 'subm2']
subm1.py:
def subf1():
...
__all__ = ['subf1']
subm2.py:
def subf2():
...
__all__ = ['subf2']
Así que el código cliente sólo tiene que hacer esto:
import mymod
mymod.subm1.subf1()
mymod.subm2.subf2()
En lugar de:
import mymod.subm1
import mymod.subm2
mymod.subm1.subf1()
mymod.subm2.subf2()
¿Cuál es la mejor práctica TM? ¿Hay algún problema con la importación recursiva o debería seguir el comportamiento predeterminado? ¿Cuál es la razón del comportamiento predeterminado?
Ambas son opciones de diseño válidas, pero tenga en cuenta que las importaciones recursivas provocarán que la carga del paquete sea más lenta a medida que crece en tamaño. –