Skip to main content
 首页 » 编程设计

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

2025年05月04日9Leo_wl

我想不通,但假设我有一个深度为 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 

每个循环我得到不同的输出。

“第一”

FIRST 
GATE 
TEXT 
ENTRY 
א 
 
ENTRY 
מחברת אל"ף 
 
ENTRY 
אחל לבאר לשון יהודית, להעמיד כל מלה כפי שאת, יש מלה רבת פנים ולא יתבונן המשכיל יסודותיה, כי אם במהות ענינה אשר סביבותיה למרבית פניה, כי המלה מושכת והולכת עד אשר מתחלקת ממראה אחד עד חמשה עשר פנים, על כן יש מלה אשר הענין ימשכנה ויורה עליה וילמד על גזרתה. ויש מלה אשר היא מושכת הענין ומבארת הפתרון ושכל סודו, וכה הוא פתרון הלשון ופשר המלים לפי מחלקותיהם ותוצאותיהם. 
 
TEXT 
ENTRY 
אב. 

“第二”

SECOND 
GATE 
TEXT 
ENTRY 
מ 
TEXT 
ENTRY 
ת 
TEXT 
ENTRY 
ח 
TEXT 
ENTRY 
ל 
TEXT 
ENTRY 

每个循环的编码完全相同,但我得到不同的输出。这怎么可能?

请您参考如下方法:

for 循环“泄漏”变量。您可能希望将 gate、text 和 entry 限定在它们各自的循环中,但它们实际上是全局的。所以,在这个循环的最后

for text in gate: 

text 的值已被更改,这会影响下一个循环。

这是一个更简单的例子:

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

(如果能够运行相同的代码两次并获得相同的结果是您认为有值(value)的事情,那么 Python 可能不是您的正确语言选择。有很多 lovely 语言可以做到有这个属性。)