Python nicht „Ausgangsparameter“ hat, also eine einfache Zuordnung wird nur ändern Die Bindung der lokalen Variablen, aber wird keinen Wert ändern noch Bindungen von Variablen außerhalb der Funktion ändern.
jedoch list
s sind wandelbar, also, wenn Sie das Argument ändern möchten tun nur so:
nameArray[:] = [0,1,2]
Dadurch wird der Inhalt von nameArray
mit 0,1,2
ersetzen (funktioniert, wenn nameArray
ein list
ist).
Eine Alternative ist Ihre Funktion einfach zurückgeben den Wert, den Sie zuweisen möchten haben:
def array_creator():
values = [0, 1, 2]
return values
my_arr = array_creator()
Schließlich, wenn die Funktion eine global
/nonlocal
Variable modifizieren will, dass Sie es als solche deklarieren müssen:
a = [1,2,3]
def array_creator():
global a
a = [0,1,2]
print(a) # [1,2,3]
array_creator()
print(a) # [0,1,2]
Oder:
def wrapper():
a = [1,2,3]
def array_creator():
nonlocal a
a = [0,1,2]
return a, array_creator
a, creator = wrapper()
print(a) # [1,2,3]
creator()
print(a) # [0,1,2]
Beachten Sie jedoch, dass es in der Regel schlechte Praxis ist, globale Variablen auf diese Weise zu verwenden, also versuchen Sie es zu vermeiden.
aber warum nicht einfach 'a = [0, 1, 2]'? Warum Menschen verwirren, indem sie den globalen Bereich innerhalb einer Funktion zuweisen? –
Warum nicht einfach das Array zurückgeben, anstatt einen "output-Parameter" zu verwenden? –