[SciPy-Dev] PR #196: simplification of optimization wrappers
Denis Laxalde
denis at laxalde.org
Thu Apr 19 15:08:34 EDT 2012
Nathaniel Smith wrote:
> >> I just saw that the options use a mutable keyword, dict.
> >> Are we running into problems? It might be safer to set it to None
> >> instead of an empty dict, given that an empty dict doesn't make a more
> >> informative signature either.
> >
> > I'm not sure to see the problem but, AFAICT, setting its default value
> > to None would not prevent an existing options dictionary (or any
> > mutable object) that would be passed as an argument to be modified. It
> > seems there might a problem iff the default value is not an empty
> > dictionary.
> > At least, {} as a default value ensures that dictionary methods
> > always work.
>
> {} as a default value is fine iff you are careful to treat the
> passed-in dictionary as read-only. E.g. this is bad
>
> def dosomething(options={}):
> options.setdefault("quickly", True)
> if options["quickly"]: ...
AFAICT, that dictionary is not modified. Yet I am now convinced that it
is safer to use None.
--
Denis
More information about the SciPy-Dev
mailing list