Importieren Sie ein Python-Modul, ohne es auszuführen

8

Ich muss nur eine einzelne Funktion aus einer anderen Python-Datei importieren, in der Dinge ausgeführt werden, aber wenn ich die Funktion importiere, wird der gesamte Code ausgeführt, anstatt nur die gewünschte Funktion zu importieren. Gibt es sowieso nur eine einzelne Funktion aus einer anderen .py-Datei zu importieren, ohne den gesamten Code auszuführen?

    
Me Man 24.06.2015, 16:03
quelle

4 Antworten

14

Verschieben Sie in another.py den Code, der nicht in einem Block ausgeführt werden soll, der nur ausgeführt wird, wenn das Skript explizit zum Ausführen aufgerufen wird und nicht nur importiert wird

%Vor%

Wenn Sie jetzt in your_script.py sind, können Sie es importieren, und es wird nicht ausgeführt

%Vor%     
bakkal 24.06.2015 16:07
quelle
2

Sie können die betreffende Funktion in eine andere Datei verschieben und in Ihre Datei importieren.

Aber die Tatsache, dass Sie alles beim Import ausführen, lässt mich denken, dass Sie die meisten Sachen in Ihrem importierten Modul in Funktionen verschieben und diese nur bei Bedarf mit einem Hauptwächter aufrufen müssen.

%Vor%

eher als das, was Sie wahrscheinlich haben, was wahrscheinlich aussieht

%Vor%

Mit dem Hauptschutz wird alles in einer Funktion nicht zum Zeitpunkt des Imports ausgeführt, obwohl Sie es bei Bedarf trotzdem aufrufen können. Wenn name == " main " bedeutet, "führe ich dieses Skript über die Befehlszeile aus?" Bei einem Import gibt die if-Bedingung false zurück, damit Ihre print_one () -, print_two () -Aufrufe nicht stattfinden.

Es gibt einige gute Gründe, Dinge in einem Script zu belassen, das beim Import ausgeführt wird. Einige davon sind Konstanten, Initialisierungs- / Konfigurationsschritte, die Sie automatisch durchführen möchten. Und eine Variable auf Modulebene ist eine elegante Möglichkeit, ein Singleton zu erreichen.

%Vor%

Aber im Großen und Ganzen lassen Sie nicht zu viel Code, um beim Laden ausgeführt zu werden, sonst werden Sie genau diese Probleme haben.

    
JL Peyret 24.06.2015 16:10
quelle
1

In dem anderen Python-Skript, das Sie importieren werden, sollten Sie den gesamten Code, der ausgeführt werden soll, beim Ausführen des Skripts in den folgenden if-Block setzen:

%Vor%

Nur wenn diese Python-Datei als Skript ausgeführt wird, ist die __name__ -Variable __main__ . Wenn Sie das Skript importieren, wird kein Code in dieser if-Bedingung ausgeführt.

    
Anand S Kumar 24.06.2015 16:08
quelle
-6

1. Öffnen Sie im Editor  2. Finden Sie die Definition 3. Kopieren Sie die alte Form weg

Die einfachste Lösung ist manchmal die schmutzigste.

    
GeorgeWL 24.06.2015 16:26
quelle