python - 关于变量范围的正确性

标签 python scope

我目前正在用 Python 开发一些东西,我对变量范围有疑问。

这是代码:

a = None
anything = False
if anything:
    a = 1
else:
    a = 2

print a # prints 2

如果我删除第一行 (a = None),代码仍然像以前一样工作。然而,在这种情况下,我将在“if” block 内声明变量,而对于其他语言(如 Java),该变量仅在“if” block 内可见。

变量作用域在 Python 中是如何工作的,在这种情况下编程的好方法是什么?

谢谢!

最佳答案

根据经验,作用域是在三个地方创建的:

  1. 文件范围——也称为模块范围
  2. 类范围 - 在 class block 内创建
  3. 函数范围 - 在 def block 内创建

(有一些异常(exception)。)

分配给一个名称将其保留在作用域命名空间中,标记为未绑定(bind),直到到达第一个分配。因此,对于心智模型,您是在为范围内的名称赋值。

关于python - 关于变量范围的正确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359726/

相关文章:

python - 从python访问一个带有指针的C++函数

python - 如何在 python 控制台中一次输入多个命令

python - 如何判断通过管道的数据何时结束

python - python中引用局部变量的匿名函数

python - 如何在pygame中绘制透明线

python - 使用字典中的值计算对数似然比

model-view-controller - 使用 Query Scope 在 Laravel Blade 模板中过滤结果

javascript - 无法创建 javascript 闭包

单独对象的构造函数中的 JavaScript 变量隔离

ruby-on-rails - 具有 where 和 where.not 的命名范围