George Sakkis wrote: > Bruno Desthuilliers wrote: > > >>George Sakkis a écrit : >> >>>Although I consider dict(**kwds) as one of the few unfortunate design >>>choices in python since it prevents the future addition of useful >>>keyword arguments (e.g a default value or an orderby function), I've >>>been finding myself lately using it sometimes instead of dict literals, >>>for no particular reason. Is there any coding style consensus on when >>>should dict literals be preferred over dict(**kwds) and vice versa ? >> >>using dict literals means that you'll always have a builtin dict - you >>cannot dynamically select another dict-like class. OTHO, you can only >>use valid python identifiers as keys with dict(**kw). > > > This is all good but doesn't answer my original question:
I thought it did - at least partly. > under which > circumstances (if any) would {'name':'Mike, 'age':23} be preferred > over dict(name='Mike', age=23) When you're sure you want a builtin dict (not any other dictlike) and/or some keys are invalid Python identifiers. > and vice versa, When all your keys are valid Python identifiers, and you may want to use another dict-like instead of the builtin dict. It's easy to replace the dict() factory in a function, class, or whole module : class MyDict(...): # dict-like class dict = MyDict then all following calls to dict(**kw) in this namespace will use MyDict instead of the builtin's one. Can't do that with dict litterals. > or if it's just a matter > of taste, Partly also, but... > similar to using single vs double quote for string literals > (when both are valid of course). Nope, this is not so similar, cf above. -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list