我对 python 中的变量范围感到困惑。这是我正在尝试做的玩具示例:
a = True
enumerated_set = enumerate(['tic','tac','toe'])
for i,j in enumerated_set:
if a == True:
print j
我得到的结果是:
tic
tac
toe
现在,
打印一个
返回
`True`
如果我再跑一次
for i,j in enumerated_set:
if a == True:
print j
我没有得到任何输出。
我很困惑...既然全局a = True
,为什么在第二个循环中没有执行打印。
感谢您的帮助。
编辑:另一个我感到困惑的例子
y = 'I like this weather'.split()
for item in y:
for i,j in enumerated_set:
if a == True:
print j
也不产生任何输出....
最佳答案
其实不是你的boolean的问题。这始终是 True
。
enumerated_set
是一个生成器。一旦你循环通过它,它就筋疲力尽了。您需要创建一个新的。
In [9]: enumerated_set = enumerate(['tic','tac','toe'])
In [10]: enumerated_set.next()
Out[10]: (0, 'tic')
In [11]: enumerated_set.next()
Out[11]: (1, 'tac')
In [12]: enumerated_set.next()
Out[12]: (2, 'toe')
In [13]: enumerated_set.next()
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
/usr/local/<ipython-input-13-7b0a413e4250> in <module>()
----> 1 enumerated_set.next()
StopIteration:
关于python - for/if循环和python中变量的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13299908/