Общее эмпирическое правило состоит в том, что импорт должен находиться в верхней части файла , так как это упрощает выполнение кода, и это упрощает определение того, какой модуль понадобится без необходимости проходить через весь код.
Питон стиль руководства охватывает некоторые основные принципы для того, как импорт должен выглядеть: http://www.python.org/dev/peps/pep-0008/#imports
На практике, однако, бывают случаи, когда это имеет смысл импортировать внутри той или иной функции. Это приходит с импортом, что бы круговое:
# Module 1
from module2 import B
class A(object):
def do_something(self):
my_b = B()
...
# Module 2
from module1 import A
class B(object):
def do_something(self):
my_a = A()
...
Это не будет работать, как есть, но вы могли бы получить вокруг округлости путем перемещения импорта:
# Module 1
from module2 import B
class A(object):
def do_something(self):
my_b = B()
...
# Module 2
class B(object):
def do_something(self):
from module1 import A
my_a = A()
...
В идеале, вы бы МОДЕЛИРОВКИ классы, чтобы это никогда не появлялось и, возможно, даже включало их в один и тот же модуль. В этом примере игрушек, имея каждый импорт, другой действительно не имеет смысла. Однако на практике есть некоторые случаи, когда имеет смысл включать импорт для одного метода внутри самого метода, а не бросать все в один и тот же модуль или извлекать рассматриваемый метод для какого-либо другого объекта.
Но, если у вас нет веских оснований для отклонения, я говорю, что соглашаюсь с соглашением о верхнем плане.
Все еще немного смущен. Похоже, загрузчик НЕОБХОДИМО загружать внешний модуль, на всякий случай вызывается исключение? Единственные издержки, которые я вижу, - это всего лишь одна дополнительная строка кода в исключении. – tetris11
Просто напишите в своем коде, сделайте импорт в верхней части файла. –
@JakobBowyer Но в чем разница, с точки зрения производительности - это то, что я действительно спрашиваю – tetris11