神秘的for循环在python中

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中有点过载.

后者将分配的每个值在expx,一前一后,并用该值执行所述循环体,因此在第一次迭代x被分配1,在所述第二2,并在最后5.此外,循环后x 保持此值!

因此,在循环之前,假设变量x已定义但具有一些其他值,x in exp将返回False,并且在循环之后,它返回True,因为x仍然分配了最后一个值exp.

  • +1,特别是链接到定义`in`的双重用法的语法. (2认同)

Amb*_*ber 7

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)