このメソッドは、単語文字の最初のグループ (つまり: ) を検索し、[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
ます。が false の場合x
、その値が返されます。それ以外の場合y
は評価され、結果の値が返されます。
ただし、ブール演算子であるため(マニュアルにもそう記載されています)、and
ブール値を返すことを期待していました。その結果、これが(どのように)機能するかを知ったとき 、私は驚きました。
これの他のユースケースは何ですか、および/またはこのかなり非直感的な実装の理論的根拠は何ですか?