Also ich bin verwirrt wie der Unterschied ist ... Hier ist ein Code, um meine Verwirrung anzuzeigen:
%Vor% import collections.OrderedDict
hat das Modul nicht gefunden, aber from collections import OrderedDict
hat es gefunden ?! Was ist der Unterschied zwischen diesen beiden Aussagen?
Die Klasse wird als collections.OrderedDict
gelesen, daher verstehe ich nicht, warum der erste Versuch das Modul nicht finden konnte
Ich verwende einfach Sammlungen als Beispiel. Ich suche nicht speziell, warum mein Beispiel so funktioniert, wie es für Sammlungen getan hat, sondern eher eine Erklärung dafür, was die verschiedenen Codezeilen tatsächlich verlangen, wenn es um Importe geht. Wenn Sie eine Erklärung zu dem Fehler hinzufügen möchten, zögern Sie nicht! Danke!
OrderedDict
ist eine Klasse im Modul collections
. Wenn Sie Dinge wie x.y sehen und etwas daraus importiert wird, bedeutet das, dass "y" in diesem Fall tatsächlich ein Modul ist.
Sie sollten die Dokumentation lesen, wie import
funktioniert: hier . Es ist lang und beteiligt, aber gleichzeitig ziemlich geradlinig, wie es in den verschiedenen Paketen und Modulen aussieht, um herauszufinden, was ins Spiel gebracht werden sollte. Insbesondere importieren Sie die Anweisung selbst und Importsystem .
PEP 221 spricht über import as
.
dient zum Importieren eines Submoduls bar
des Moduls foo
. Dies kann als
Ein Objekt wird importiert
%Vor%Dies kann auch als
importiert werden %Vor% collections.OrderedDict
ist kein Submodul, sondern ein Objekt, so dass es nur auf die zweite Weise als importiert werden kann.