2010-07-04 2 views
3
def myfunc(x): 
y = x 
y.append('How do I stop Python from modifying x here?') 
return y 

x = [] 
z = myfunc(x) 
print(x) 
+0

Cela vous aidera à: http://stackoverflow.com/questions/986006/python-how-do-i-pass-a-variable -by-reference – VoodooChild

+0

Les personnes qui classent ma question en aval: Comment devrais-je savoir à ce sujet? Le style que j'ai donné fonctionnerait dans toutes les autres langues que j'ai utilisées. –

+0

@ricky: J'ai rarement downvote et je ne l'ai pas fait ici, mais en réponse à votre question, vous avez raison, l'affectation Python est différente de beaucoup d'autres langues, mais je suppose que les downvoters pensent quelque chose comme "RTFM". Peu importe, pour votre propre bien, ne pas transpirer une question downvoted (si cela arrive un tas, vous devriez probablement essayer de comprendre pourquoi). – msw

Répondre

11

Vous faire:

y = x[:] 

pour faire une copie de la liste x.

+1

Il est à noter que la copie est peu profonde. – FMc

1

Vous devez copier X avant de le modifier,

def myfunc(x): 
y = list(x) 
y.append('How do I stop Python from modifying x here?') 
return y 

x = [] 
z = myfunc(x) 
print(x) 
Questions connexes