虽然 Python 的作用域规则已被普遍理解,但维护控制变量的设计选择退出循环后的范围对某些人来说仍然是个谜。考虑以下代码:
for foo in xrange(10): bar = 2 print(foo, bar)
此打印 (9, 2),这可能看起来违反直觉,因为 'foo' 控制循环,而 'bar' 是在其中定义的。可以理解为什么“bar”可以在循环之外访问,但是“foo”的持久性引起了担忧。
可能的解释在于语法简单性。在循环内分配给变量不需要消除作用域歧义,因为分配意味着作用域。在特定范围内声明变量并不是 Python 中的做法。 “global”关键字的存在是为了显式地表示全局范围分配。
这种设计并没有显着阻碍采用,并且用户已经接受了在循环之外访问控制和定义变量的能力。它避免了范围界定和消歧的复杂性,简化了代码的可读性和开发。
以上是为什么 Python 的'for”循环控制变量在循环完成后仍保留在作用域内?的详细内容。更多信息请关注PHP中文网其他相关文章!