Ich habe angefangen, über Python zu lernen und liest gerade durch ein Skript von jemand anderem geschrieben. Ich bemerkte, dass Globals im ganzen Skript verstreut sind (und ich mag es nicht) .. Abgesehen davon, ich habe auch bemerkt, dass, wenn ich Code wie dieserPython Variable Bereich
def some_function():
foo.some_method()
# some other code
if __name__ == '__main__' :
foo = Some_Object()
some_function()
obwohl ich nicht passieren in foo in some_function(), aber some_function ist immer noch in der Lage, foo (??!) zu manipulieren. Ich mag das nicht, obwohl es dem Javascript-Abschluss (?) Ähnelt. Ich würde gerne wissen, ob es möglich ist, some_function() davon abzuhalten, auf foo zuzugreifen, wenn foo nicht als Funktionsargument übergeben wird? Oder das ist der bevorzugte Weg in Python ??! (Ich verwende Python 2.5 unter ubuntu hardy im Moment)
gerade fertig mit dem Entfernen der Globals, bin ich derzeit auf Nicht-Locals (Einheimische der umliegenden Funktionen - für verschachtelte Funktionen) Ich möchte die Menge an nicht-lokalen verwendet wahrscheinlich aufgrund einer Gewohnheit, die ich aus dem Codieren in PHP gebracht - wenn eine Variable wird nicht in eine Funktion übergeben, dann existiert die Variable nicht in der Funktion (was IMO, es ist leichter zu debuggen, wenn schlimme Dinge passieren) – Jeffrey04
@ Jeffrey, ja wrt globals, aber nonlocals, besonders wenn eine Funktion gerade ist auf sie zuzugreifen und sie NICHT neu zuzuweisen (letzteres ist erst ab 2.6 eine Option mit dem 'nonlocal'-Schlüsselwort), ist eigentlich kein Problem - und ich spreche auf der Basis von jahrzehntelanger hart erkämpfter Erfahrung ;-). –
@Alex danke für die Info – Jeffrey04