2010-07-04 3 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

Это поможет вам: http://stackoverflow.com/questions/986006/python-how-do-i-pass-a-variable -by-reference – VoodooChild

+0

Люди, которые опрокидывают мой вопрос: Как я должен знать об этом? Стиль, который я дал, будет работать на всех других языках, которые я использовал. –

+0

@ ricky: Я редко опускаюсь и не был здесь, но в ответ на ваш вопрос вы правы. Назначение Python отличается от многих других языков, но я предполагаю, что downvoters думают что-то вроде «RTFM». Независимо от того, ради себя, не потейте один вопрос с нисходящей нитью (если это произойдет, вам, вероятно, стоит попытаться выяснить, почему). – msw

ответ

11

Вы делаете:

y = x[:] 

сделать копию списка x.

+1

Стоит отметить, что копия неглубокая. – FMc

1

Вам нужно скопировать X, прежде чем изменить его,

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) 
Смежные вопросы