我正在处理一些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
我也不希望两者都能起作用,主要是因为我假设python的for循环语法如下:
for item in list:
do something to item
但是我不确定为什么第一个示例中会以某种方式识别“水果”并返回列表中的最后一个项目。
这是怎么回事?
答案 0 :(得分:3)
您发布的第一个循环开始执行时,已经定义了fruit
。这似乎是因为上一个for循环使用了该变量,例如:
for fruit in fruits:
# Do something
该循环结束后,fruit
不会消失,并保持其上一个值不变
答案 1 :(得分:1)
在您的第一个示例中,fruit
必须已在代码的其他位置定义且保持值为“ fruit3”。在第二个示例中,您从未定义num
,因此尝试打印不存在的变量,即NameError
。