Список Python Scope вне функцииPython

Программы на Python
Anonymous
 Список Python Scope вне функции

Сообщение Anonymous »

У меня есть проблема, которую трудно объяснить, потому что есть много кода. Таким образом, это сводится к следующей проблеме. Но я получаю неожиданные результаты. Может кто -нибудь объяснить, почему?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

Вернуться в «Python»