我对python中变量的范围感到困惑.这是我想要做的一个玩具示例:
a = True
enumerated_set = enumerate(['tic','tac','toe'])
for i,j in enumerated_set:
if a == True:
print j
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
tic
tac
toe
Run Code Online (Sandbox Code Playgroud)
现在,
print a
回报
`True`
Run Code Online (Sandbox Code Playgroud)
如果我又跑了
for i,j in enumerated_set:
if a == True:
print j
Run Code Online (Sandbox Code Playgroud)
我没有输出.
我很困惑......从全局开始a = True,为什么在第二个循环中没有执行打印.
我感谢您的帮助.
编辑:我很困惑的另一个例子
y = 'I like this weather'.split()
for item in y:
for i,j in enumerated_set:
if a == True:
print j
Run Code Online (Sandbox Code Playgroud)
也没有输出....
它实际上不是你的布尔值的问题.这总是如此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:
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |