基本for循环,我需要帮助理解这个循环词是如何:
word = "hello"
for word in word:
print word在for循环一开始,word=hello变量就不会被word=h覆盖吗?如果是这样的话,它如何仍然遍历字串中的所有字母?
谢谢您的澄清。
发布于 2014-09-12 11:57:59
让我们看看字节码:
>>> def so25807731():
... word = "hello"
... for word in word:
... print word
...
>>> import dis
>>> dis.dis(so25807731)
2 0 LOAD_CONST 1 ('hello')
3 STORE_FAST 0 (word)
3 6 SETUP_LOOP 19 (to 28)
9 LOAD_FAST 0 (word)
12 GET_ITER
>> 13 FOR_ITER 11 (to 27)
16 STORE_FAST 0 (word)
4 19 LOAD_FAST 0 (word)
22 PRINT_ITEM
23 PRINT_NEWLINE
24 JUMP_ABSOLUTE 13
>> 27 POP_BLOCK
>> 28 LOAD_CONST 0 (None)
31 RETURN_VALUE 请注意,首先,Python获取字符串(GET_ITER)的迭代器,并循环该字符串,而不是实际的字符串(FOR_ITER)。
因此,它不需要原始字符串来“记住”字符是什么;它只是使用新创建的迭代器。“旧word”值实际上已不再使用,因此您可以在没有问题的情况下覆盖它。类似的逻辑解释了为什么这段代码也可以工作:
word = "llamas"
for character in word:
word = None
print character发布于 2014-09-12 11:57:04
我从来没有编码过蟒蛇,但我认为它会像这样工作
word = "hello"
i=0
while i <len(word):
print word[i]
i += 1https://stackoverflow.com/questions/25807731
复制相似问题