Seite 1 von 1

Zugriff auf Variablen die außerhalb einer Funktion definiert sind

Verfasst: Montag 25. Januar 2016, 15:38
von gerald123
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

Re: Zugriff auf Variablen die außerhalb einer Funktion definiert sind

Verfasst: Montag 25. Januar 2016, 15:48
von Sirius3
@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.

Re: Zugriff auf Variablen die außerhalb einer Funktion definiert sind

Verfasst: Montag 25. Januar 2016, 17:03
von gerald123
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)

Re: Zugriff auf Variablen die außerhalb einer Funktion definiert sind

Verfasst: Montag 25. Januar 2016, 17:11
von 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.