Djf*_*wug 3 python variables foreach for-loop
基本for循环,我需要帮助理解这个循环词:
word = "hello"
for word in word:
print word
Run Code Online (Sandbox Code Playgroud)
一旦for循环开始,word=hello
变量是否会被覆盖word=h
?如果是这样,它如何仍然遍历单词字符串中的所有字母?
在此先感谢您的澄清.
Doo*_*nob 12
我们来看看字节码:
>>> 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
Run Code Online (Sandbox Code Playgroud)
注意首先,Python抓取string(GET_ITER
)的迭代器并循环遍历,而不是实际的string(FOR_ITER
).
因此,它不需要原始字符串来"记住"字符是什么; 它只是使用新创建的迭代器.word
实际上不再使用"旧"值,因此您可以毫无问题地覆盖它.类似的逻辑解释了为什么这段代码也能正常工作:
word = "llamas"
for character in word:
word = None
print character
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
258 次 |
最近记录: |