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?
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."
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.
Tags und Links python