Better writing in python
Duncan Booth
duncan.booth at invalid.invalid
Wed Oct 24 09:46:50 EDT 2007
Alexandre Badez <alexandre.badez at gmail.com> wrote:
> Thanks for your try Cliff, I was very confused :P
> More over I made some mistake when I post (to make it easiest).
>
> Here is my real code:
>
> with
> dArguments = {
> 'argName' : {
> 'mandatory' : bool, # True or False
> [...], # other field we do not care here
> }
> }
>
> lMandatory = []
> lOptional = []
> for arg in cls.dArguments:
> if cls.dArguments[arg]['mandatory']:
> lMandatory.append(arg)
> else:
> lOptional.append(arg)
> return (lMandatory, lOptional)
>
> So, as you see, we agree each other about "if bool" or "if bool is
> True" ;)
>
> So, my question was how to give it a better 'python like' look ?
> Any idea ?
>
>
For a 'python like' look lose the Hungarian notation (even Microsoft
have largely stopped using it), increase the indentation to 4 spaces,
and also get rid of the spurious parentheses around the result.
Otherwise it is fine: clear and to the point.
If you really wanted you could write something like:
m, o = [], []
for arg in cls.dArguments:
(m if cls.dArguments[arg]['mandatory'] else o).append(arg)
return m, o
Or even:
m, o = [], []
action = [o.append, m.append]
for arg in cls.dArguments:
action[bool(cls.dArguments[arg]['mandatory'])](arg)
return m, o
but it just makes the code less clear, so why bother?
More information about the Python-list
mailing list