更多pythonic的方式来写这个?

Nul*_*ion 5 python

我在这里有这个代码:

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
Run Code Online (Sandbox Code Playgroud)

哪个有效,但我不是特别喜欢这一行:

return None if not m else m.group(1)
Run Code Online (Sandbox Code Playgroud)

在我看来,如果我们可以使用三元运算符,这看起来会更清晰:

return (m ? m.group(1) : None)
Run Code Online (Sandbox Code Playgroud)

但那当然不存在.你有什么建议?

Chr*_* B. 10

Python 一个三元运算符.你正在使用它.它只是在X if Y else Z形式中.

也就是说,我很容易写出这些东西.如果你牺牲清晰度,在一条线上装配东西并不是那么好.

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

    return None
Run Code Online (Sandbox Code Playgroud)