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