Python中的神秘循环
让 exp = [1,2,3,4,5]
如果我然后执行x in exp
,它将给我False
。但是如果我执行:
for x in exp:
if x==3:
print('True')
然后执行x in exp
,返回True
。这里发生了什么事?我没有给x分配任何东西。是吗 我真的很困惑。
编辑:很抱歉,如果我之前没有说过:x
之前未定义。
回答
谢谢大家。我现在明白了 的元素exp
被分配给x
作为exp
被遍历。和x in
exp
等于True
代码的最后一行,因为最后一个元素已分配给x
。
-
似乎您偶然发现了
in
Python的某些重载。- 与
x in exp
,您在问“x
在exp
吗?” - 有
for x in exp: ...
,你告诉蟒“ 对于 每一个元素 中exp
,把它x
做......”
后者将分配的每个值在
exp
给x
,一前一后,并执行体用该值循环的,所以在第一次迭代中x
被分配1
,在所述第二2
,并在最后5
。同样,在循环后x
保持 该值!因此,在循环之前,假设
x
已定义变量但具有其他值,x in exp
则将返回False
;在循环之后,它将返回True
,因为x
仍为分配了最后一个值exp
。 - 与