相关疑难解决方法(0)

范围规则的简短描述?

Python范围规则究竟是什么?

如果我有一些代码:

code1
class Foo:
   code2
   def spam.....
      code3
      for code4..:
       code5
       x()
Run Code Online (Sandbox Code Playgroud)

在哪里x找到?一些可能的选择包括以下列表:

  1. 在封闭的源文件中
  2. 在类命名空间中
  3. 在函数定义中
  4. 在for循环索引变量中
  5. 在for循环中

在执行期间,当函数spam在其他地方传递时,也存在上下文.也许lambda函数的传递方式有点不同?

某处必须有简单的参考或算法.对于中级Python程序员来说,这是一个令人困惑的世界.

python scope dynamic-languages

451
推荐指数
8
解决办法
24万
查看次数

Python类范围规则

编辑:看起来这是一个非常古老的"错误"或实际上,功能.例如,参见这封邮件

我试图了解Python范围规则.更准确地说,我认为我理解它们,但后来我在这里找到了这个代码:

x = "xtop"
y = "ytop"
def func():
    x = "xlocal"
    y = "ylocal"
    class C:
        print(x)
        print(y)
        y = 1
func()
Run Code Online (Sandbox Code Playgroud)

在Python 3.4中,输出是:

xlocal
ytop
Run Code Online (Sandbox Code Playgroud)

如果我用函数替换内部类,那么它合理地给出了UnboundLocalError.你能解释一下为什么它在课堂上表现出这种奇怪的方式吗?选择范围规则的原因是什么?

python scoping

28
推荐指数
2
解决办法
1216
查看次数

标签 统计

python ×2

dynamic-languages ×1

scope ×1

scoping ×1