Unterschied zwischen x Import y und Import x.y

8

Also ich bin verwirrt wie der Unterschied ist ... Hier ist ein Code, um meine Verwirrung anzuzeigen:

%Vor%

Erklärung:

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

Hinweis:

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!

    
Ryan Saxe 29.10.2013, 20:51
quelle

2 Antworten

3

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 .

    
wheaties 29.10.2013, 20:59
quelle
2

PEP 221 spricht über import as .

%Vor%

dient zum Importieren eines Submoduls bar des Moduls foo . Dies kann als

importiert werden %Vor%

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.

    
user1907906 29.10.2013 20:57
quelle

Tags und Links