On Friday, May 8, 2015 at 5:30:15 PM UTC+5:30, Michael Welle wrote:
> Hello,
> 
> assume the following function definition:
> 
> def bar(foo = []):
>     print("foo: %s" % foo)
>     foo.append("foo")
> 
> It doesn't work like one would expect (or as I would expect ;-)). As I
> understand it the assignment of the empty list to the optional parameter
> foo take place when the function object is created, not when it is
> called. I think from the perspective of a user this is very strange.
> Anyways, what would be a good idiom to get the desired behaviour?

A standard gotcha of python.

Short version: Dont default optionals to mutable data structures

Longer: See 
http://docs.python-guide.org/en/latest/writing/gotchas/#mutable-default-arguments

[Or just run a search for "python mutable default" ]

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to