<p>首先,PEP8说可以在<a href="https://www.python.org/dev/peps/pep-0008/#maximum-line-length" rel="nofollow noreferrer">Maximum Line Length</a>下拆分长行:</p>
<blockquote>
<p>Long lines can be broken over multiple lines by wrapping expressions in parentheses. These should be used in preference to using a backslash for line continuation.</p>
</blockquote>
<p>事实上,由于括号的缘故,示例中不需要反斜杠</p>
<hr/>
<p>PEP8说可以在<a href="https://www.python.org/dev/peps/pep-0008/#multiline-if-statements" rel="nofollow noreferrer">multiline if-statements</a>下拆分条件,尽管该部分的主要重点是如何将其与下面的块区分开来</p>
<blockquote>
<p>When the conditional part of an <code>if</code>-statement is long enough to require that it be written across multiple lines, it's worth noting that the combination of a two character keyword (i.e. <code>if</code>), plus a single space, plus an opening parenthesis creates a natural 4-space indent for the subsequent lines of the multiline conditional. This can produce a visual conflict with the indented suite of code nested inside the <code>if</code>-statement, which would also naturally be indented to 4 spaces. This PEP takes no explicit position on how (or whether) to further visually distinguish such conditional lines from the nested suite inside the <code>if</code>-statement. Acceptable options in this situation include, but are not limited to:</p>
<pre><code># No extra indentation.
if (this_is_one_thing and
that_is_another_thing):
do_something()
# Add a comment, which will provide some distinction in editors
# supporting syntax highlighting.
if (this_is_one_thing and
that_is_another_thing):
# Since both conditions are true, we can frobnicate.
do_something()
# Add some extra indentation on the conditional continuation line.
if (this_is_one_thing
and that_is_another_thing):
do_something()
</code></pre>
</blockquote>
<p>就个人而言,为了最大程度地提高可读性,我会选择最后一个选项。这就给了我们:</p>
<pre><code>if (self.SuperLongSpecificCorperateVariableNameIcantChangeCommunication
!= self.SuperLongSpecificCorperateVariableNameIcantChangeControl):
do_something()
</code></pre>
<h2>其他选择</h2>
<p>您可以使用临时“内部使用”名称来缩短行:</p>
<pre><code>_Comm = self.SuperLongSpecificCorperateVariableNameIcantChangeCommunication
_Control = self.SuperLongSpecificCorperateVariableNameIcantChangeControl
if _Comm != _Control:
do_something()
</code></pre>
<p>这是假设上下文不在本地范围内。如果它实际上在本地范围内,则不需要是“内部使用”</p>
<hr/>
<p>可以使用helper函数在局部范围内为它们指定较短的名称。因为它们是属性,所以可以传入它们的对象:</p>
<pre><code>def _compare(instance):
a = instance.SuperLongSpecificCorperateVariableNameIcantChangeCommunication
b = instance.SuperLongSpecificCorperateVariableNameIcantChangeControl
return a != b
if _compare(self):
do_something()
</code></pre>