[Chicago] order of keyword arguments

kirby urner kirby.urner at gmail.com
Sat Feb 7 05:48:09 CET 2009


On Thu, Feb 5, 2009 at 4:20 AM, Igor Sylvester <igorsyl at gmail.com> wrote:
> Thanks for your comments.
>
> Doesn't it just go against the design of Python?  Dictionaries don't
> care about order, so if you do, use something other than a dictionary?
>  You can pass a list or something?  Don't use the **kwargs feature?
> $0.02
>
> My suggestion is not to change the dict object but perhaps make kwargs an
> instance of a subclass of dict.  The kwargs instance would know about the
> ordering of the keyword arguments.

The thing is you're not required to pass arguments as a dictionary,
and if the order really matters, then you probably shouldn't.

However if order does matter and you must pass to **kwargs, you could
have a special function that takes the assignments and seeds a
dictionary with argument order info e.g.

orderargs(egg=17, chicken=56) gives back...

{('chicken':(17,1), 'egg':(56,0)}   # the tuple encodes ordering info

...for then passing to your **kwargs.

You could go myfunction ( orderargs(b=17, a=56) ) and have your
myfunction aware of which came first.

Kirby


More information about the Chicago mailing list