Seite 1 von 1

Frage zu main

Verfasst: Sonntag 23. August 2015, 22:49
von Alfons Mittelmeyer
In der Dokumentation finde ich folgendes zu main:

Code: Alles auswählen

if __name__ == "__main__":
    # execute only if run as a script
    main()
Das heißt man definiert dann eine Funktion main dazu. Aber diese Funktion main ist doch dann global. Und da sie nicht lokal ist, wird sie auch von der Speicherverwaltung nicht beseitigt, wenn man danach Python nicht beendet. Das bedeutet also ein Memory Leak.
Sollte man es nicht besser dann so schreiben?

Code: Alles auswählen

if __name__ == "__main__":

	def main():
		print("Mein Main")

	main()
Hier ist die Funktionsdefinition in der if Abfrage enthalten. Jetzt weiß ich aber nicht, ob das dann nach dem if wieder aufgelöst wird. Hab es getestet:

Code: Alles auswählen

if __name__ == "__main__":

	def main():
		print("Mein Main")

	main()

main()
Das Resultat ist, dass die Funkton nach dem if auch noch da ist. Was kann ich machen, dass die Speicherverwaltung greift und die Funktion beseitigt?

Re: Frage zu main

Verfasst: Sonntag 23. August 2015, 22:55
von BlackJack
@Alfons Mittelmeyer: Könntest Du bitte endlich mit Deinen Speicherverwaltungsfantasien aufhören… Es ist vollkommen egal ob und wann die Funktion von der Speicherverwaltung beseitigt wird. Das interessiert keinen ausser Dir und nur Du nennst das ein Speicherleck.