I am having a problem which is hard to explain because there's a lot of code involve. So it boils down to the following problem.
I am trying to access the list xxx outside the function foo but I am getting unexpected results. Can someone please explain why?
Here's my function which I have created to show the problem:
def foo(xxx = []):
if len(xxx) == 5:
return xxx
xxx += [1]
foo()
return xxx
If I run
print foo()
I get
[1, 1, 1, 1, 1]
which is what I expect.
But I want the list xxx to be accessible outside foo. So, I am doing
xxx = []
print foo(xxx)
print xxx
Now I expect to get the list xxx to be
[1, 1, 1, 1, 1]
but what I am getting xxx to be, is
[1]
which is not what I expect.
Can someone explain why? And is it possible to access the correct xxx outside foo without accessing it through the output of the function foo? The reason I want to do this is because in my actual code I am returning something other than in my function foo and making changes to xxx which I want to see after the foo has executed. I can make the function also return xxx every time but this will make my code unnecessarily bulky. But I am not sure if I am compromising the code quality. I don't know. Please suggest which ever way is the best.
Thanks
listwhen provided (and thatlistwill be modified even if not returned), otherwise it's modifying the sharedlistused as a default (which cannot be accessed normally without returning it).