Python: Aufruf der Funktion aus der importierten Datei

8

Wie rufen Sie eine Funktion aus einer importierten Datei auf? zum Beispiel:

Test:

%Vor%

Test2:

%Vor%

Das gibt mir einen Namensfehler und sagt, dass meine Funktion nicht definiert ist. Ich habe es auch versucht:

%Vor%

Und:

%Vor%

Ich habe auch versucht, test2 nicht im Test zu importieren. Ich komme zu Python von C ++, also fürchte ich, etwas zu verpassen, was für erfahrene Python-Programmierer offensichtlich ist ...

    
RageCage 27.09.2013, 16:58
quelle

1 Antwort

11

Sie erstellen einen kreisförmigen Import. test.py importiert test2.py , das test.py zu importieren versucht.

Tu das nicht. Bis zum Zeitpunkt test2 imports test hat dieses Modul die Ausführung des gesamten Codes noch nicht abgeschlossen. Die Funktion ist noch nicht definiert:

  • test wird kompiliert und ausgeführt, und ein leeres Modulobjekt wird zu sys.modules hinzugefügt.

  • Die Zeile import test2 wird ausgeführt.

    • test2 wird kompiliert und ausgeführt, und ein leeres Modulobjekt wird zu sys.modules hinzugefügt.

    • Die Zeile import test wird ausgeführt.

      • test ist bereits als Modul in sys.modules vorhanden, dieses Objekt wird zurückgegeben und an den Namen test gebunden.
    • In einer nächsten Zeile wird test.aFunction() ausgeführt. In test existiert kein solcher Name. Eine Ausnahme wird ausgelöst.

  • Die Zeilen, die def aFunction() definieren, werden niemals ausgeführt, da eine Ausnahme ausgelöst wurde.

Entfernen Sie die import test2 -Zeile und führen Sie test2.py direkt aus, und das Importieren der Funktion funktioniert problemlos:

%Vor%     
Martijn Pieters 27.09.2013, 17:01
quelle

Tags und Links