Ternary operator alternative in Ptyhon

Gary Herron gherron at islandtraining.com
Wed Jun 18 02:35:32 EDT 2008


kretik wrote:
> I'm sure this is a popular one, but after Googling for a while I 
> couldn't figure out how to pull this off.
>
> Let's say I have this initializer on a class:
>
>     def __init__(self, **params):
>
> I'd like to short-circuit the assignment of class field values passed 
> in this dictionary to something like this:
>
>     self.SomeField = \
>     params.has_key("mykey") ? params["mykey"] : None)

For years, Python did not have such a thing, but recent versions support 
the syntax
   a if c else b

In spite of the odd ordering of that parts, they are executed (or not) 
just as you like.
  self.SomeField =  params["mykey"]  if params.has_key("mykey")  else  None


Gary Herron

>
> Obviously I know this is not actual Python syntax, but what would be 
> the equivalent? I'm trying to avoid this, basically:
>
>     if params.has_key("mykey"):
>         self.SomeField = params["mykey"]
>     else:
>         self.SomeField = None
>
> This is not a big deal of course, but I guess my main goal is to try 
> and figure out of I'm not missing something more esoteric in the 
> language that lets me do this.
>
> Thanks in advance.
> -- 
> http://mail.python.org/mailman/listinfo/python-list




More information about the Python-list mailing list