2013-03-27 2 views

ответ

15

Нет, разница не в производительности. В обоих случаях весь модуль должен анализироваться, и любой код уровня модуля будет выполнен. Единственное различие заключается в пространствах имен: во-первых, все имена импортированного модуля станут именами в текущем модуле; во втором - только имя пакета определено в текущем модуле.

Тем не менее, очень редко можно использовать from foo import *. Либо импортируйте модуль, либо импортируйте из него определенные имена.

+0

Да, спасибо за ваш ответ. Я думаю, что есть и некоторые причины использовать «из импорта пакетов», когда имя пакета может быть изменено. или есть другой пакет с такими же функциями, заменит оригинал, который вызывает изменение требования. – Zuckonit

+1

Разница в производительности может накапливаться из всех атрибутов lookups 'package.foo', когда вы фактически используете' package'. Тем не менее, если это проблема, импортируйте определенные имена или кешируйте поисковые имена в локальных сетях. –

+4

Когда пакет изменяет имя, вы можете просто «импортировать новое имя как старое имя». Если есть опасность часто переключаться с пакетами, 'import package as interfacename' сразу же. –

Смежные вопросы