Code: Alles auswählen
def aendere(eine_liste):
eine_liste[1] = 4
x = [1,2,3]
aendere(x)
print x # Druckt [1,4,3]
Code: Alles auswählen
def nichtaendern(x):
x = 0
y = 1
nichtaendern(y)
print y # Druckt 1
Wenn der Wert also eine Liste ist und ich die nunmal in meiner Funktion bearbeiten muss, dann wird die Liste auch global geändert, was sehr schlecht ist. In PHP ist das nicht so.
Ich will eine Liste einer Verzeichnisstruktur zu einem Pfad verknüpfen. Da os.path.join(path1, path2) leider keine Listen verketten kann, sondern nur Strings, habe ich mir folgende Funktion gebastelt:
Code: Alles auswählen
import os
class Foo:
def __init__(self):
lPath = ["a", "b", "c"]
sDir = "d"
x = self.joined_path(lPath)
print x
print lPath
def joined_path(self, lPath):
while len(lPath) > 1:
lPath[0] = os.path.join(lPath[0], lPath.pop(1))
return str(lPath.pop())
Foo()
Wieso wird die Liste nicht nur innerhalb (lokal) der Funktion geändert, sondern auch global? Wichtiger: Wie stelle ich es an, dass ich die Liste nicht global verändere?