Похоже, угловой не может ввести модуль из-за исключения - https://docs.angularjs.org/error/ $ injector / modulerr
Трудно сказать, что он мог быть из вашего образа.
Существует использование для обоих случаев, таким образом, я не думаю, что это - проблема неизбежного выбора. Я рассмотрел бы использование от модуля import x,y,z
когда:
Существуют справедливо небольшое количество вещей импортировать
Цель импортированных функций очевидна при разводе от имени модуля. Если названия являются довольно родовыми, они могут столкнуться с другими и сказать Вам мало. например, наблюдение remove
говорит Вам мало, но os.remove
вероятно, подскажет, что Вы имеете дело с файлами.
Имена не сталкиваются. Подобный вышеупомянутому, но более важный. Никогда не делайте что-то как:
from os import open
import module [as renamed_module]
имеет преимущество, что оно дает немного больше контекста о том, что называют, когда Вы используете его. Это имеет недостаток, что это немного более нарушено, когда модуль действительно не дает больше информации и немного менее производителен (2 поиска вместо 1).
Это также имеет преимущества при тестировании однако (например, замене os.open с фиктивным объектом, не имея необходимость изменять каждый модуль), и должно использоваться при использовании изменяемых модулей, например.
import config
config.dburl = 'sqlite:///test.db'
Если бы в сомнении, я всегда шел бы с import module
стиль.
С существованием следующего синтаксиса:
import some_other_module as some_module
аргумент пригодности для обслуживания стиля 2 больше не релевантен.
Я склонен использовать стиль 1. Обычно, я нахожу, что явно ссылаюсь на импортированное имя пакета только несколько раз в типичной программе Python. Все остальное - методы на объекте, которые, конечно, не должны ссылаться на импортированный пакет.
Я предпочитаю import X
и затем используйте X.a
как можно больше.
Мое исключение центрируется на глубоко вложенных модулях в большой платформе как Django. Их имена модуля имеют тенденцию становиться длинными, и их примеры, которые все говорят from django.conf import settings
сохранить Вас ввод django.conf.settings.DEBUG
везде.
Если имя модуля глубоко вкладывается, то исключение должно использовать from X.Y.Z import a
.
Я обычно использую порог для решения этого. Если я хочу использовать много вещей в some_module
, Я буду использовать:
import some_module as sm
x = sm.whatever
Если существуют только одна или две вещи, мне нужно:
from some_module import whatever
x = whatever
Это предполагает, что мне не нужен a whatever
от some_other_module
, конечно.
Я склонен использовать as
пункт на импорте так, чтобы я мог уменьшить свой ввод и substitue другой модуль довольно легко в будущем.
Я нахожу что нотация
from some_module import some_symbol
работы лучше всего в большинстве случаев. Кроме того, в случае столкновения имени для символа можно использовать:
from some_module import some_symbol as other_symbol
Как вопрос указывает, он старается не переписывать имя модуля все время, каждый раз с риском ввода с опечатками его. Я использую синтаксис:
import module [as other_module]
Только в двух случаях:
Я лично пытаюсь не смешать слишком много со своим пространством имен, таким образом, в большинстве ситуаций я просто делаю
import module
или модуль импорта как модификация
Только реальное различие - когда у меня есть модуль с единым классом, это использовало много. Если у меня был sublclassed a list
введите для добавления некоторого funcionality там, я использовал бы
from SuperImprovedListOverloadedWithFeatures import NewLIst
nl = NewList()
и т.д.
Я склонен использовать только несколько членов каждого модуля, таким образом, существует много из
from john import cleese
from terry import jones, gilliam
в моем коде. Я импортирую целые модули (такой как os
или wx
) если я ожидаю использовать большую часть модуля, и имя модуля коротко. Я также импортирую целые модули, если будет конфликт имен, или я хочу напомнить читателю, с чем связана та функция.
import michael
import sarah
import wave
gov_speech = wave.open(sarah.palin.speechfile)
parrot_sketch = wave.open(michael.palin.justresting)
(Я мог использовать from wave import open as wave_open
, но я изображаю это wave.open
будет более знакомо читателю.
Я верю в более новые версии Python (2.5 +? должен проверить мои факты...), можно даже сделать:
import some_other_module as some_module
Таким образом, Вы могли все еще пойти со стилем 1 и загрузить другой модуль позже.
Я думаю, что это обычно отображается на то, насколько Вы хотите загромоздить свое пространство имен. Вы будете просто использовать одно или два имени в модуле? Или все они (from x import *
не всегда плохо, просто обычно)?