Zugriff auf Variablen die außerhalb einer Funktion definiert sind

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
gerald123
User
Beiträge: 36
Registriert: Donnerstag 10. September 2015, 12:10

Hey, mir ist nicht klar, warum ich innerhalb der Funktion "test" Zugriff auf die Variable "t" habe? Ich dachte, "t"muss als global definiert werden?

Code: Alles auswählen

t= [12,2]
def test():
	print (t)
f = test()

Vielen Dank für eure Hilfe
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@gerald123: Du hast ja auch Zugriff auf "print". Allgemein hast Du auf alle Variablen in den übergeordneten Namensräumen lesenden Zugriff. Nur zum Schreiben (was man nicht tun sollte) brauchst Du global.
gerald123
User
Beiträge: 36
Registriert: Donnerstag 10. September 2015, 12:10

Danke für deine Antwort. Folgendes ist jedoch auch möglich (Schreibrechte ohne t als global definiert zu haben):

Code: Alles auswählen

t = [2,3]
def test ():
    t.append(666)
    
call = test()

print(t)
BlackJack

@gerald123: Das Wort „Schreibrechte“ ist hier vielleicht irreführend. Du kannst den Namen nicht an einen neuen Wert binden, und um nichts anderes geht es bei den Sichtbarkeitsregeln. Und auch wenn man natürlich Objekte auf die man zugreifen kann, verändern kann, sofern sie selbst das zulassen, sollte man das so nicht machen, weil man auf diese Weise globalen Zustand ändert.
Antworten