<p>如果<code>Turn</code><em>等于1,则第一个<code>if</code>条件为真,因此<code>Turn</code>将设置为0。但随后执行传递到第二个<code>if</code>条件,现在是<code>True</code>,因此<code>Turn</code>将重置为1。在</p>
<p>明智的处理方法是使用<code>elif</code>,正如其他人所提到的那样。或者,您可以将<code>print</code>复制到两个分支中,并在第一个分支中放置一个早期的<code>return</code>。<code>elif</code>方法更好,因为它避免了代码重复,而且如果可以,它也是避免早期{<cd9>}的好方法。但我还是给你看代码:</p>
<pre><code>def SomeFunction():
global Turn
if Turn == 1:
#some code
Turn = 0
print Turn
return
if Turn == 0:
#some code
Turn = 1
print Turn
Turn = 1
for i in range(10):
SomeFunction()
</code></pre>
<p><strong>输出</strong></p>
^{pr2}$
<p>顺便说一句,Python通常的惯例是对简单的变量和函数名使用小写。类名使用大写和CamelCase名称。当然,<em>没有</em>来遵循这个约定,但是如果你不这样做,在大多数语法突出显示软件中查看代码时,它会使代码看起来很奇怪,因此对于Python社区的其他成员来说,这是不必要的混乱。在</p>
<p>有关详细信息,请参见<a href="https://www.python.org/dev/peps/pep-0008/" rel="nofollow">PEP 0008 Style Guide for Python Code</a>。在</p>
<hr/>
<p>实际上,您可以在0和1之间交替使用一个值,而无需使用<code>if</code>语句。诀窍是使用异或运算符<code>^</code>:</p>
<pre><code>def SomeFunction():
global Turn
Turn ^= 1
print Turn
Turn = 1
for i in range(10):
SomeFunction()
</code></pre>
<p>这将产生与以前相同的输出。在</p>
<p>如果一个只有<em>ever</em>的变量的值是0和1,那么您应该考虑将其改为布尔值,并在<code>False</code>和{<cd5>}之间交替使用,因为这样可以生成更具可读性的代码。您可以将其替换为:</p>
<pre><code>Turn = not Turn
</code></pre>
<p>你可以在算术表达式中使用一个布尔值,它的行为就像0或1,尽管有些人不喜欢这样做,并认为它的可读性较低。在</p>
<p><br/></p>
<p>我想我还应该提到您应该尽量避免使用<code>global</code>。它可能很方便,但是使用可修改的全局变量会破坏代码的模块性。对于小脚本来说这不是什么大问题,但是当您编写大型复杂的程序时,您将真正欣赏模块化设计。在</p>