首页 > 解决方案 > 在 for 循环外使用 for 循环变量

问题描述

我不明白这怎么可能?在这里,我在循环外使用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))

标签: pythonpython-3.xfor-loop

解决方案


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

例如:

for i in range(10):
    pass

print(i) # prints 9

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

for i in range(10):
    j = 17

print(j) # prints 17

推荐阅读