考虑这个例子:
for iter in xrange(10):
myvar = iter
print myvar
# 9
这里myvar
显然在循环之外?但它仍然可以访问。
如果这是Perl,则会抛出错误。
Python中这种功能背后的原因是什么? 有害吗?那么在循环之前声明变量的最佳做法是什么?
答案 0 :(得分:5)
for循环没有创建新范围(Ruby的行为方式也相同)。如果您来自为块创建新范围的语言,这可能会令人惊讶。
只要您了解规则,我就不会相信它有害。
如果您的功能和方法太大而无法跟踪,那么您的功能和方法就太大了。
答案 1 :(得分:-1)
将其视为您正在执行此操作:
my_var = 0
my_var = 1
my_var = 2
...
my_var = 9
print my_var
这基本上就是迭代的样子,没有理由不能从你当前的方法/范围中访问my_var
。