gpt4 book ai didi

python - Python 'for' 循环中的范围

转载 作者:IT老高 更新时间:2023-10-28 12:24:25 25 4
gpt4 key购买 nike

我不是在问 Python 的作用域规则;我一般了解作用域在 Python for 循环中的工作原理。我的问题是为什么以这种方式做出设计决策。例如(没有双关语):

for foo in xrange(10):
bar = 2
print(foo, bar)

上面将打印 (9,2)。

这让我觉得很奇怪:“foo”实际上只是控制循环,而“bar”是在循环内部定义的。我可以理解为什么可能有必要在循环外部访问“bar”(否则,for 循环的功能将非常有限)。我不明白为什么循环退出后控制变量必须保持在范围内。根据我的经验,它只会使全局命名空间变得困惑,并且更难追踪可能被其他语言的解释器捕获的错误。

最佳答案

最可能的答案是它只是保持语法简单,并没有成为采用的绊脚石,并且许多人很高兴在循环构造中分配名称时不必消除名称所属的范围.变量不在范围内声明,它由赋值语句的位置暗示。 global关键字正是因为这个原因而存在(表示分配是在全局范围内完成的)。

更新

关于这个话题的讨论很好:http://mail.python.org/pipermail/python-ideas/2008-October/002109.html

Previous proposals to make for-loopvariables local to the loop havestumbled on the problem of existingcode that relies on the loop variablekeeping its value after exiting theloop, and it seems that this isregarded as a desirable feature.

简而言之,您可以将其归咎于 Python 社区:P

关于python - Python 'for' 循环中的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3611760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com