Es wird alles ausgeführt!!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
forumseeker
User
Beiträge: 20
Registriert: Freitag 5. Januar 2024, 15:04

Hallo!

ich habe eine Test-Datei gemacht und will von einer anderen py-Datei nur einen Wert auslesen. Es wird aber die komplette Python-Datei ausgeführt.

Hier ist mein Code:

Code: Alles auswählen

import compare_ALT

test = compare_ALT.orders
print(test)
Ws mache ich falsch?

Gruss,
Andreas
Benutzeravatar
sparrow
User
Beiträge: 4501
Registriert: Freitag 17. April 2009, 10:28

Namen werden in Pyhton klein_mit_unterstrich geschrieben. Ausnahmen sind die Namen von Klassen (_nicht_ deren Instanzen): PascalCase und Konstanten: (KOMPLETT_GROSS).

Abkürzungen sind schlecht. Dein Modul sollte eher compare_alternative oder compare_alternative heißen.

Ansonsten kann man nur mutmaßen, was dein Problem ist, denn aus deiner Frage geht es nicht hervor. Was ist denn "die komplette Python-Datei"? Ich schaue mal in meine Glaskugel und vermute: du wunderst dich, dass Nebeneffekte auftreten, weil du compare_ALT (besser: compare_alternatives) importierst?
Das liegt daran, dass nur folgende Dinge auf Modulebene (also ohne Einrückgung) stehen dürfen: die shebang-Zeile, Importe, die Definition von Konstanten (die sich dadurch auszeichnen, dass sie wirklich konstant sind und sich der Wert niemals zur Laufzeit ändert), die Definition von Klassen und Funktionen und die Weiche die deine main-Funktion aufruft.
Ich rate: Hast du nicht gemacht und wunderst dich nun, dass alles, was nicht eingerückt ist, bei einem Import ausgeführt wird.
einfachTobi
User
Beiträge: 510
Registriert: Mittwoch 13. November 2019, 08:38

Verhindern kannst du das, indem du die o. g. Dinge in eine Funktion packst. Üblicherweise nennt man diesen "Einstiegspunkt" main:

Code: Alles auswählen

BAR = 23
FOO = "dies das"

def main():
    print("Hello World!")

if __name__ == "__main__":
    main()
Wenn du dieses Modul nun importierst wird nichts ausgegeben und du kannst auf die Konstanten/Funktion etc. zugreifen
forumseeker
User
Beiträge: 20
Registriert: Freitag 5. Januar 2024, 15:04

danke!!
Antworten