2013-03-27 2 views

Antwort

15

Nein, der Unterschied ist keine Frage der Leistung. In beiden Fällen muss das gesamte Modul analysiert werden, und jeder Code auf Modulebene wird ausgeführt. Der einzige Unterschied besteht in Namespaces: In der ersten werden alle Namen im importierten Modul zu Namen im aktuellen Modul; in der zweiten wird nur der Paketname im aktuellen Modul definiert.

Das heißt, es gibt sehr selten einen guten Grund, from foo import * zu verwenden. Importieren Sie entweder das Modul oder importieren Sie bestimmte Namen daraus.

+0

ja, danke für deine Antwort. Ich denke, es gibt auch einige Gründe, "vom Paketimport *" zu verwenden, wenn der Paketname geändert werden kann. oder es gibt ein anderes Paket mit den gleichen Funktionen wird das Original ersetzen, da die Änderung der Anforderung. – Zuckonit

+1

Der Leistungsunterschied kann sich bei allen Attribut-Lookups 'package.foo' akkumulieren, wenn Sie' package' tatsächlich verwenden. Wenn dies jedoch ein Problem ist, importieren Sie bestimmte Namen oder Cache-Namen in Locals. –

+4

Wenn ein Paket seinen Namen ändert, können Sie einfach newname als oldname importieren. Wenn die Gefahr besteht, Pakete häufig zu wechseln, importieren Sie das Paket sofort als InterfaceName. –

Verwandte Themen