[EMAIL PROTECTED] schrieb: > So I just got bitten by the "don't use a mutable object as an optional > argument" gotcha. I now realize that for this function: > >>>> def func(x, y=[]): > ... y.append(x) > ... print y > ... > > y is initialized when the function is imported, not when the function > is executed. However, if this is the case, then why is y not showing > up as an attribute of func?
Because it's not an attribute of the function object; it's a default value of the function. >>>> vars(func) > {} >>>> dir(func) > ['__call__', '__class__', '__delattr__', '__dict__', '__doc__', > '__get__', '__getattribute__', '__hash__', '__init__', '__module__', > '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', > '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', > 'func_dict', 'func_doc', 'func_globals', 'func_name'] > > I'm using Python 2.4.3, if that is at all relevant. Thanks in advance > for any help. Take a look at func_defaults. Regards, Martin -- http://mail.python.org/mailman/listinfo/python-list