此方法搜索第一组单词字符(即:)[a-zA-Z0-9_]
,返回第一个匹配的组或None
在失败的情况下。
def test(str):
m = re.search(r'(\w+)', str)
if m:
return m.group(1)
return None
相同的函数可以重写为:
def test2(str):
m = re.search(r'(\w+)', str)
return m and m.group(1)
这同样有效,并且是记录在案的行为;正如本页明确指出的那样:
表达式
x and y
首先计算x
; 如果x
为假,则返回其值;否则,y
评估并返回结果值。
但是,作为一个布尔运算符(它甚至在手册上这么说),我希望and
返回一个布尔值。结果,当我发现它(如何)起作用时 ,我感到很惊讶。
这还有哪些其他用例,和/或这种相当不直观的实现的基本原理是什么?