У меня есть проблема, которую трудно объяснить, потому что есть много кода. Таким образом, это сводится к следующей проблеме. Но я получаю неожиданные результаты. Может кто -нибудь объяснить, почему?def foo(xxx = []):
if len(xxx) == 5:
return xxx
xxx += [1]
foo()
return xxx
< /code>
Если я запускаю < /p>
print foo()
< /code>
Я получаю < /p>
[1, 1, 1, 1, 1]
< /code>
Что я и ожидаю. < /p>
Но я хочу, чтобы список xxx < /strong> был доступен за пределами Foo. Итак, я делаю < /p>
xxx = []
print foo(xxx)
print xxx
< /code>
Теперь я ожидаю получить список xxx < /strong>, чтобы быть < /p>
[1, 1, 1, 1, 1]
< /code>
Но то, что я получаю xxx < /strong> быть, < /p>
[1]
< /code>
, что я не ожидаю. < /p>
может кто -нибудь объяснить почему? И можно ли получить доступ к правильному xxx снаружи foo без доступа к ней через выход функции foo ? Причина, по которой я хочу сделать это, заключается в том, что в моем фактическом коде я возвращаю что -то иное, чем в своей функции foo и внося изменения в xxx , которые я хочу видеть после < Strong> foo выполнил. Я могу сделать функцию также возвращать xxx каждый раз, но это сделает мой код излишне громоздким. Но я не уверен, что я компрометирую качество кода. Я не знаю. Пожалуйста, предложите, какой путь - лучший. < /P>
Спасибо < /p>
Подробнее здесь: https://stackoverflow.com/questions/330 ... a-function