python - for/if循环和python中变量的范围

标签 python scope

我对 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/

相关文章:

jquery - document.ready 中声明的函数未定义?

javascript - 在 JavaScript 的 block 作用域内使用 'var' 声明的内部函数表达式

python - 无法从特定页面抓取 main_container

python - 我尝试运行我的 python 程序但是当我运行它时没有任何反应

Python监控子进程的stderr和stdout

c - 通过引用错误传递结构(不完整的结构和重新声明)

scope - 如何访问范围之外的 rust 变量?

c++ - 非静态数据成员和一个定义规则

python - 配置 Apache,以便子文件夹不由 WSGI 处理,而是由 Apache 本身处理

python - 在 Google App Engine 的 ModelForm 中设置父级