相关疑难解决方法(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中确定'for'循环

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

for foo in xrange(10):
    bar = 2
print(foo, bar)
Run Code Online (Sandbox Code Playgroud)

以上将打印(9,2).

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

python scope

161
推荐指数
4
解决办法
8万
查看次数

在Python中阻止范围

当您使用其他语言编写代码时,有时会创建一个块范围,如下所示:

statement
...
statement
{
    statement
    ...
    statement
}
statement
...
statement
Run Code Online (Sandbox Code Playgroud)

一个目的(很多)是提高代码可读性:显示某些语句形成逻辑单元或某些局部变量仅在该块中使用.

是否有一种在Python中做同样事情的惯用方法?

python scope

85
推荐指数
5
解决办法
2万
查看次数

标签 统计

python ×3

scope ×3

dynamic-languages ×1