Python'用于单词'循环中的单词

时间:2014-09-12 11:53:50

标签: python variables for-loop foreach

基本for循环,我需要帮助理解这个循环词:

word = "hello"
for word in word:
  print word

for循环开始后,word=hello变量是否会被word=h覆盖? 如果是这样,它如何仍然遍历单词字符串中的所有字母?

提前感谢您的澄清。

2 个答案:

答案 0 :(得分: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        

注意首先,Python抓取字符串(GET_ITER)的迭代器并循环遍历,而不是实际的字符串(FOR_ITER)。

因此,它不需要原始字符串来记住"人物是什么;它只是使用新创建的迭代器。 "旧word"值实际上已不再使用,因此您可以毫无问题地覆盖它。类似的逻辑解释了为什么这段代码也能正常工作:

word = "llamas"
for character in word:
  word = None
  print character

答案 1 :(得分:-3)

我从未编写过python,但我猜它会像这样工作

word = "hello"
i=0
while i <len(word):
     print word[i]
     i += 1