<p>我曾多次创建类似的代码:</p>
<pre><code>if condition():
word = " not"
else:
word = ""
print "A five ounce bird could{0} carry a one pound coconut".format(word)
</code></pre>
<p>我已经把问题分解到它的核心,在“实践”中,<code>"A"</code>,<code>"five"</code>,<code>"bird"</code>,<code>"a"</code>,<code>"one"</code>,和{<cd6>}的变量,这样它们可能都会发生变化,并与它们一起添加复数的s-es和其他。在</p>
<p>我总觉得这不太令人满意。在<code>"not"</code>之前需要额外的空间,而<code>{0}</code>之前缺少一个空格,这两个问题都令人讨厌,但既然<code>word</code>是空的,我就不想有其他方法了。在</p>
<p>创建两个单独的消息时使用<a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself" rel="nofollow">DRY</a>中断,有时甚至不可行,因为可能的组合太多。在</p>
<p>有没有更优雅的方式来做这个?在</p>
<p>对于<code>" not"</code>的情况,请保持简单:</p>
<pre><code>print "A five ounce bird could{0} carry a one pound coconut".format(" not" if condition() else "")
</code></pre>