Seite 1 von 1
Module Funktion, die schon beim import aufgerufen wird
Verfasst: Sonntag 29. September 2019, 13:46
von Erhy
Hallo!
Möchte ein Module a'la matplotlib.pyplot erstellen.
Beim Debuggen sehe ich, dass Code schon beim Import ausgeführt wird.
Könnt ihr mir verraten, wie man eine Funktion ermächtigt, dass sie schon
beim Import ausgeführt wird?
Danke für eure Antworten
Erhy
Re: Module Funktion, die schon beim import aufgerufen wird
Verfasst: Sonntag 29. September 2019, 13:58
von __deets__
Du kannst ja immer einfach Code auf modulebene schreiben. Und Dir den Source von matplotlib anschauen.
Nur machen sollte man das eher nicht. Code der implizit ausgeführt wird macht oft Ärger. Warum glaubst du das machen zu müssen?
Re: Module Funktion, die schon beim import aufgerufen wird
Verfasst: Sonntag 29. September 2019, 15:42
von Erhy
Um eine globale Variable zu definieren, die nur modulweit gültig ist.
In matplotlib.pyplot wird meinem abschließenden pyplot.show() alle Plots gezeigt, die vorher definiert worden sind.
Re: Module Funktion, die schon beim import aufgerufen wird
Verfasst: Sonntag 29. September 2019, 15:48
von __blackjack__
@Erhy: Wie __deets__ schon schrieb sollte man so etwas nicht machen. `pyplot` macht das ja im Grunde auch nur so unsauber mit globalem Zustand weil Benutzer von Matlab & Co das so gewohnt sind in der interaktiven Umgebung.
Re: Module Funktion, die schon beim import aufgerufen wird
Verfasst: Sonntag 29. September 2019, 16:04
von Erhy
mein Modul soll ähnlich wie pyplot sein, da die Anwender es so gewohnt sind.
Irgendwann werde ich es schon herausbekommen, wo man die initiale Funktion einträgt
oder wie sie zu definieren ist.
Erhy
Re: Module Funktion, die schon beim import aufgerufen wird
Verfasst: Sonntag 29. September 2019, 16:08
von nezzcarth
Erhy hat geschrieben: Sonntag 29. September 2019, 16:04
mein Modul soll ähnlich wie pyplot sein, da die Anwender es so gewohnt sind.
Irgendwann werde ich es schon herausbekommen, wo man die initiale Funktion einträgt
oder wie sie zu definieren ist.
Erhy
__deets__ hat es doch schon erklärt. Das passiert automatisch. Man muss in Python extra Schritte unternehmen, damit Code auf globaler Ebene
nicht ausgeführt wird (das bekannte "if __name__ == '__main__': ..." -Konstrukt). So etwas wie 'BEGIN { ... }' in AWK oder Perl gibt es in Python nicht.
Re: Module Funktion, die schon beim import aufgerufen wird
Verfasst: Sonntag 29. September 2019, 16:09
von Sirius3
Und weil man es einmal eingeführt hat, haben die Matplolib-Macher jetzt Probleme, das wieder los zu werden. Also fang erst gar nicht damit an, wirklich nicht. Auch Deine Anwender werden Dir bald dafür dankbar sein.
Re: Module Funktion, die schon beim import aufgerufen wird
Verfasst: Sonntag 29. September 2019, 20:25
von Erhy
und wie soll ich es anlegen?
Die Plot-Aufrufe sollen in einer Anwendung, die vielleicht schon besteht,
nach belieben einfügbar sein, ähnlich einer Log-Funktion.
Könnte natürlich auch vorschlagen, dass initial einer globalen Variablen die Instanz einer zentralen Klasse zugeordnet wird
und jeder Aufruf einer Methode dieser Klasse entspricht.
Danke für eure Design-Tipps
Erhy
Re: Module Funktion, die schon beim import aufgerufen wird
Verfasst: Sonntag 29. September 2019, 22:32
von __blackjack__
@Erhy: Das was Du da beschreibst ist doch ziemlich genau das was `pyplot` macht.
Re: Module Funktion, die schon beim import aufgerufen wird
Verfasst: Montag 30. September 2019, 13:22
von Erhy
ja, habe mir auch das plotting Modul angeschaut.
Scheint auch ein gutes Beispiel zu sein.
Re: Module Funktion, die schon beim import aufgerufen wird
Verfasst: Dienstag 1. Oktober 2019, 14:09
von __blackjack__
Ja, ein gutes Beispiel wie man das eigentlich nicht macht.
