Warum musste ich eine bestimmte Klasse zum Importieren in Python angeben?

8

Ich habe gerade Python 2.7.1 (auf Mac) aktualisiert, damit ich OrderedDicts verwenden konnte.

Nach dem Versuch, das folgende Skript auszuführen:

%Vor%

Ich habe:

%Vor%

Ich habe es mit:

behoben %Vor%

... aber ich möchte wissen, warum ich das tun musste?

Warum funktioniert das breite import collections nicht für mich?

    
eastydude5 18.04.2011, 23:35
quelle

4 Antworten

16
%Vor%

importiert das Auflistungsmodul in den aktuellen Namespace, sodass Sie mit diesem Import wie folgt arbeiten können:

%Vor%

importiert nur die angegebene Klasse in den aktuellen Namespace.

    
Nicoretti 18.04.2011, 23:50
quelle
3

Du kannst import * from fooModule machen, aber es ist schlechtes juju und bringt Guido zum Weinen.

Für eine kurze Erklärung, warum es so ist, import this .

    
richo 19.04.2011 00:00
quelle
2

Ich denke, es geht so:

Wenn Sie import collections ausführen, weisen Sie das Modul "collections" einer Variablen mit dem Namen collections im aktuellen Namespace zu.

An dieser Stelle können Sie mit dem OrderedDict auf die Klasse collections.OrderedDict im Collections-Modul zugreifen.

Was import collections nicht tut bedeutet, dass andere Variablen im lokalen Namespace zugewiesen werden. Insbesondere weist es dem Sammlungsmodul nicht automatisch eine Variable zu (obwohl in einer anderen Antwort erwähnt, können Sie dies explizit tun).

Was warum nicht macht, glaube ich, dass es aus dem zweiten Punkt in Das Zen von Python stammt: "Explizit ist besser als implizit."

    
Paul D. Waite 18.04.2011 23:50
quelle
1

So funktioniert Python. Ursprünglich haben Sie das Modul importiert und den Namensraum "collections" in Ihrem Modul mit dem Namen "collections" zur Verfügung gestellt. Um irgendetwas in diesem Modul zu referenzieren, müssen Sie es als collections.OrderedDict qualifizieren. Das from -Form zieht eine Objektreferenz aus dem Modul in Ihren Modul-Namespace, sodass Sie es nicht qualifizieren müssen.

    
Keith 18.04.2011 23:49
quelle

Tags und Links