擅长:python、mysql、java
<p>使用<code>any</code>,如果我们找到匹配项,则会短路返回True,否则计算结果为False:</p>
<pre><code>if any(s in self.users_roles for s in (self.DSE , self.PME , self.SHE ))
</code></pre>
<p>代码的计算结果始终是<code>True</code>,因为<code>if self.DSE</code>基本上是在检查<code>if bool(self.DSE)</code>,对于任何非空字符串,<code>self.PME</code>和<code>self.SHE</code>的值都是一样的。在</p>
^{pr2}$
<p>您还可以将<code>self.users_roles</code>设为一个集合并使用<code>set.intersection</code>:</p>
<pre><code>self.users_roles = {'pm_pmdo', 'pm_pmco', 'shv', 'dsv', 'pmv'}
if self.users_roles.intersection([self.DSE, self.PME, self.SHE])
</code></pre>