Python 运行相同的循环两次,但得到不同的结果

Python 运行相同的循环两次,但得到不同的结果,python,Python,我无法理解这一点,但假设我有一个名为text的深度为3的字符串数组 在下面的代码中怎么会出现这种情况: print "FIRST" for gate in text[1:]: print "GATE" for text in gate: print "TEXT" for entry in text: print "ENTRY" print what print "SECOND" for gate

我无法理解这一点,但假设我有一个名为text的深度为3的字符串数组

在下面的代码中怎么会出现这种情况:

print "FIRST"
for gate in text[1:]:
    print "GATE"
    for text in gate:
        print "TEXT"
        for entry in text:
            print "ENTRY"
            print what

print "SECOND"

for gate in text[1:]:
    print "GATE"
    for text in gate:
        print "TEXT"
        for entry in text:
            print "ENTRY"
            print what
每个循环都有不同的输出

首先

第一 大门 文本 进入 א 进入 מחברת אלף 进入 אחל לבאר לשון יהודית, להעמיד כל מלה כפי שאת, יש מלה רבת פנים ולא יתבונן המשכיל יסודותיה, כי אם במהות ענינה אשר סביבותיה למרבית פניה, כי המלה מושכת והולכת עד אשר מתחלקת ממראה אחד עד חמשה עשר פנים, על כן יש מלה אשר הענין ימשכנה ויורה עליה וילמד על גזרתה. ויש מלה אשר היא מושכת הענין ומבארת הפתרון ושכל סודו, וכה הוא פתרון הלשון ופשר המלים לפי מחלקותיהם ותוצאותיהם. 文本 进入 אב. 第二

第二 大门 文本 进入 מ 文本 进入 ת 文本 进入 ח 文本 进入 ל 文本 进入 每个循环的编码都完全相同,但我得到的输出却不同。这怎么可能呢?

文本已被修改。在第二个循环之前,text的值取自gate中for text的最后一次迭代:

您应该考虑将内部循环变量重命名为不同的东西。< /P> < P>文本已被修改。在第二个循环之前,text的值取自gate中for text的最后一次迭代:

您应该考虑将内部循环变量重命名为不同的。<循环/变量> < > >循环泄漏变量。您可能希望gate、text和entry的作用域是各自的循环,但它们实际上是全局的。所以,在这个循环的末尾

for text in gate:
文本的值已更改,这将影响下一个循环

这里有一个更简单的例子:

x = 'abc'   

for x in x:
    print x,
# output: "a b c"

for x in x:
    print x,
# output: "c"
如果您认为能够两次运行相同的代码并获得相同的结果是有价值的,那么Python可能不是您的正确选择。有很多语言确实具有此属性。

对于循环泄漏变量。您可能希望gate、text和entry的作用域是各自的循环,但它们实际上是全局的。所以,在这个循环的末尾

for text in gate:
文本的值已更改,这将影响下一个循环

这里有一个更简单的例子:

x = 'abc'   

for x in x:
    print x,
# output: "a b c"

for x in x:
    print x,
# output: "c"
如果您认为能够两次运行相同的代码并获得相同的结果是有价值的,那么Python可能不是您的正确选择。有很多语言确实具有这种特性