В случае сомнений я обычно размещаю свои операторы импорта в верхней части модуля. Часто это сокращает повторение, что приятно. Однако есть ли недостаток производительности в случае, когда требуется только одна функция (или класс) для импорта?Python Импорт на уровне функции VS. Уровень модуля
выполняет следующие импорт только при вызове функции?
def func():
from task import test
Если это так, я полагаю, что это может быть небольшой эффект. Я также предполагаю, что вы могли бы получить некоторые добавленные точки для более быстрой сборки мусора и изменения переменных, поскольку импортированные объекты не будут добавлены в глобальный словарь. В качестве другого плаката хорошо сказано:
Это главным образом связано с переменным взглядом. Для поиска переменной в глобальной области требуется поиск в словаре. Напротив, компилятор ставит статические локальные имена и ссылается на них по индексу, поэтому поиск словаря не требуется.
Являются ли эти справедливые предположения я полностью вне базы?
Благодаря
Что касается производительности поиска имен: ** Это не имеет значения. ** В этом редком случае вы узнаете, когда вы закончили код, выяснили, что он слишком медленный и профилированный. – delnan