擅长:python、mysql、java
<p>观察<code>re.match</code>的输出:</p>
<pre><code>In [2473]: pattern = r"spam"
In [2474]: re.match(pattern, "spamspamspam")
Out[2474]: <_sre.SRE_Match object; span=(0, 4), match='spam'>
</code></pre>
<p>这将返回一个匹配对象。现在,如果我们改变一下我们的模式。。。在</p>
^{pr2}$
<p>基本上,<code>None</code>的真值是<code>False</code>,而对象的真值是{<cd4>}。<code>if</code>条件评估结果的“真实性”,并相应地执行if主体。在</p>
<p>您的if条件可以重写一点,如下所示:</p>
<pre><code>if re.match(pattern, "spamspamspam") is not None:
....
</code></pre>
<p>这个和<code>if re.match(pattern, "spamspamspam")</code>是一个相同的。在</p>
<p>如果您正在学习python,您应该知道如何评估对象的“真实性”。所有非空的数据结构都计算为<code>True</code>。所有空数据结构都是<code>False</code>。对象是<code>True</code>,而{<cd2>}是{<cd3>}。在</p>
<pre><code>In [2482]: if {}:
...: print('foo')
...: else:
...: print('bar')
...:
bar
In [2483]: if ['a']:
...: print('foo')
...: else:
...: print('bar')
...:
foo
</code></pre>