Python for循环顶部的项不';它里面的项目不匹配,但它仍然打印

Python for循环顶部的项不';它里面的项目不匹配,但它仍然打印,python,python-3.x,Python,Python 3.x,我正在处理一些python代码,有些东西引起了我的注意,对我来说毫无意义 我有以下清单: fruits = ['apple', 'pear', 'banana', 'melon', 'grape', 'cherry', 'kiwi', 'persimmon', 'fruit1', 'fruit2','fruit3'] for kittens in fruits: print(fruit) 返回: fruit3 fruit3 fruit3 fruit3 fruit3 fr

我正在处理一些python代码,有些东西引起了我的注意,对我来说毫无意义

我有以下清单:

fruits = ['apple', 'pear', 'banana', 'melon', 'grape', 'cherry', 'kiwi', 'persimmon', 'fruit1', 'fruit2','fruit3']


for kittens in fruits:
    print(fruit)
返回:

 fruit3
 fruit3
 fruit3
 fruit3
 fruit3
 fruit3
 fruit3
 fruit3
 fruit3
 fruit3
 fruit3
与此同时

for fruit in fruits:
    print(num)
返回:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-422-f672ba99a550> in <module>()
      1 for fruit in fruits:
----> 2     print(num)

NameError: name 'num' is not defined
但我不确定为什么在第一个示例中会以某种方式识别“水果”,并返回列表中的最后一项


发生了什么事?

在第一个示例中,
fruit
必须在代码的其他地方定义,并且保存值“fruit3”。在第二个示例中,您从未定义过
num
,因此您试图打印一个不存在的变量,因此在第一个示例中,
namererror

必须在代码的其他地方定义了
fruit
,并且保存了值“fruit3”。在第二个示例中,您从未定义过
num
,因此您试图打印一个不存在的变量,因此当您发布的第一个循环开始执行时,
fruit
已经定义了
namererror

。这可能是因为前面的for循环使用了该变量,例如:

对于水果中的水果:
#做点什么

当该循环结束时,
fruit
不会消失,并保持其上一个值的活动状态

当您发布的第一个循环开始执行时,
fruit
已定义。这可能是因为前面的for循环使用了该变量,例如:

对于水果中的水果:
#做点什么

当该循环结束时,
fruit
不会消失并保持活动状态,因为它拥有的最后一个值已在代码中的其他地方定义,可能是通过导入无法复制该行为。您确定您没有在其他地方声明循环吗?@ic3b3rg-就是这样,谢谢。
fruit
已经在您的代码中的其他地方定义,可能是通过导入无法复制该行为。你确定你没有在其他地方声明循环吗?@ic3b3rg-就是这样,谢谢。乔纳森,这个答案让你清楚你发布的代码中发生了什么吗?如果没有,告诉我你不明白什么是的Jonathan,这个答案让你清楚你发布的代码中发生了什么吗?如果没有,告诉我你还不明白什么
for item in list:
    do something to item