Frage zu main

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.
Gesperrt
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

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?
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.
Gesperrt