More pythonic way to write this?
Question: I have this code here:

    
    
    import re
    def get_attr(str, attr):
        m = re.search(attr + r'=(\w+)', str)
        return None if not m else m.group(1)
    
    str = 'type=greeting hello=world'
    
    print get_attr(str, 'type')   # greeting    
    print get_attr(str, 'hello')  # world
    print get_attr(str, 'attr')   # None
    

Which works, but I am not particularly fond of this line:

    
    
    return None if not m else m.group(1)
    

In my opinion this would look cleaner if we could use a ternary operator:

    
    
    return (m ? m.group(1) : None)
    

But that of course isn't there. What do you suggest?


Answer: Python _has_ a ternary operator. You're using it. It's just in the `X if Y
else Z` form.

That said, I'm prone to writing these things out. Fitting things on one line
isn't so great if you sacrifice clarity.

    
    
    def get_attr(str, attr):
        m = re.search(attr + r'=(\w+)', str)
        if m:
            return m.group(1)
    
        return None
    

