【问题标题】:Why a variable can be accessible outside the loop in Python? [duplicate]为什么可以在 Python 的循环之外访问变量? [复制]
【发布时间】:2016-02-12 03:35:04
【问题描述】:

考虑这个例子:

for iter in xrange(10):
   myvar = iter

print myvar
# 9

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

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

【问题讨论】:

标签: python for-loop scoping


【解决方案1】:

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

只要你知道规则,我不相信它是有害的。

如果你的函数和方法太大以至于你无法跟踪,那么你的函数和方法太大了。

【讨论】:

    【解决方案2】:

    把它想象成你正在这样做:

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

    这基本上就是迭代的样子,没有理由无法从您当前的方法/范围内访问my_var

    【讨论】:

      猜你喜欢
      • 2018-09-21
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      相关资源
      最近更新 更多