This method searches for the first group of word characters (ie: [a-zA-Z0-9_]), returning the first matched group or None in case of failure.
def test(str):
    m = re.search(r'(\w+)', str)
    if m:
        return m.group(1)
    return None
The same function can be rewritten as:
def test2(str):
    m = re.search(r'(\w+)', str)
    return m and m.group(1)
This works the same, and is documented behavior; as this page clearly states:
The expression
x and yfirst evaluatesx; ifxis false, its value is returned; otherwise,yis evaluated and the resulting value is returned.
However, being a boolean operator (it even says so on the manual), I expected and to return a boolean. As a result, I was astonished when I found out (how) this worked.  
What are other use cases of this, and/or what is the rationale for this rather unintuitive implementation?