在 for 循环之外使用 for 循环变量

-1 python for-loop python-3.x

我不明白这怎么可能?这里我在循环外使用ifor循环的值。forfor

for i, kv in enumerate(bucket): 
    k, v = kv  
    if key == k:
        key_exists = True
        break 

#here is the issue...

if key_exists:
    bucket[i] = ((key, value))
    print(i)
else:
    bucket.append((key, value))
Run Code Online (Sandbox Code Playgroud)

kay*_*ya3 9

这是可能的,因为 Python 没有块作用域。for在循环中(在您的代码中)分配给的变量i没有其自己的更窄的范围仅限于循环for;它存在于外部作用域中,因此在循环之后它仍然可用。

例如:

for i in range(10):
    pass

print(i) # prints 9
Run Code Online (Sandbox Code Playgroud)

循环内的任何其他赋值也是如此。在这里,变量j在循环之后可见,原因相同:for循环块不是一个单独的、更窄的范围。

for i in range(10):
    j = 17

print(j) # prints 17
Run Code Online (Sandbox Code Playgroud)