On 10/07/2016 01:38 PM, Daiyue Weng wrote:
Hi, I declare two parameters for a function with default values [],
def one_function(arg, arg1=[], arg2=[]):
PyCharm warns me:
Default argument value is mutable,
what does it mean? and how to fix it?
cheers
You'll run into this bug
def foo(a=[]):
a.append('item')
print a
foo()
foo()
['item']
['item', 'item'] #what ?? 2 'item' ??
default argument are evaluated when defining the function, meaning the
list you bound to the default argument is shared by all the function calls.
Easily fixed:
def foo(a=None):
a = [] if a is None else a
print a
foo()
foo()
['item']
['item']
So the rule of thumb for default argument value is "No mutable"
Cheers,
Jm
note : python 2.7 code
--
https://mail.python.org/mailman/listinfo/python-list