Win*_*don 4 python membership for-loop contains sequence
让 exp = [1,2,3,4,5]
如果我然后执行x in exp,它会给我False.但是如果我执行:
for x in exp:
if x==3:
print('True')
Run Code Online (Sandbox Code Playgroud)
然后执行x in exp,它返回True.这里发生了什么事?我没有给x分配任何东西.我有吗?我真的很困惑.
**编辑:**对不起,如果我之前没有说过:x之前没有定义.
谢谢大家.我现在明白了.的元素exp被分配给x作为exp被遍历.并且在最后一行代码中x in exp等于True,因为最后一个元素已被分配给x.
tob*_*s_k 17
好像你偶然发现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.
for x in ...固有地将值分配给x,因为x是在循环变量一个for循环.
循环的每次迭代都会赋值x; Python不会为循环创建新的变量范围.
for x in (1, 2, 3):
foo(x)
Run Code Online (Sandbox Code Playgroud)
相当于......
x = 1
foo(x)
x = 2
foo(x)
x = 3
foo(x)
Run Code Online (Sandbox Code Playgroud)