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?