为什么在Python循环外可以访问变量?

时间:2015-11-11 03:37:10

标签: python for-loop scoping

考虑这个例子:

for iter in xrange(10):
   myvar = iter

print myvar
# 9

这里myvar显然在循环之外?但它仍然可以访问。 如果这是Perl,则会抛出错误。

Python中这种功能背后的原因是什么? 有害吗?那么在循环之前声明变量的最佳做法是什么?

2 个答案:

答案 0 :(得分:5)

for循环没有创建新范围(Ruby的行为方式也相同)。如果您来自为块创建新范围的语言,这可能会令人惊讶。

只要您了解规则,我就不会相信它有害。

如果您的功能和方法太大而无法跟踪,那么您的功能和方法就太大了。

答案 1 :(得分:-1)

将其视为您正在执行此操作:

my_var = 0
my_var = 1
my_var = 2
...
my_var = 9

print my_var

这基本上就是迭代的样子,没有理由不能从你当前的方法/范围中访问my_var