De entre las diversas formas de importar código, ¿hay alguna forma de uso preferible en comparación con otras? Este enlace http://effbot.org/zone/import-confusion.htm en definitiva afirma queMejores prácticas de importación de Python (y Django)
from foo.bar import MyClass
no es la forma preferida para importar MiClase en circunstancias normales o si no sabe lo que está haciendo. (Por el contrario, una mejor manera le gustaría:
import foo.bar as foobaralias
y luego en el código, para acceder a MiClase utilizan
foobaralias.MyClass
)
En resumen, parece que el enlace ha hecho referencia anteriormente es diciendo que es generalmente mejor importar todo desde un módulo, en lugar de solo partes del módulo.
Sin embargo, ese artículo que he vinculado es realmente antiguo.
También he oído que es mejor, al menos en el contexto de los proyectos de Django, importar solo las clases que desea usar, en lugar de todo el módulo. Se ha dicho que este formulario ayuda a evitar errores circulares de importación o al menos hace que el sistema de importación django sea menos frágil. Se señaló que el propio código de Django parece preferir "de x import y" a "import x".
Suponiendo que el proyecto en el que estoy trabajando no utiliza ninguna característica especial de __init__.py
... (todos nuestros archivos __init__.py
están vacíos), ¿qué método de importación debería favorecer, y por qué?
Una excepción específica a esto podría ser en Django donde está importando una clase que implementa un modelo (que representa una tabla de base de datos). En ese caso, es preferible decir "de django.contrib.auth import User". Pero como dije, esta es una convención específica para un ambiente particular. –
¿qué pasa con 'from myapp import utils; utils.frobnicate() '? – Joschua
Joschua: eso está bien también, ya que cualquiera que lea podrá ver de dónde se está importando 'frobnicate'. –