我不明白这怎么可能?这里我在循环外使用i
for循环的值。for
for
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)
这是可能的,因为 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)