关于变量范围的正确性

Men*_*nda 7 python scope

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

这是代码:

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

print a # prints 2
Run Code Online (Sandbox Code Playgroud)

如果我删除第一行(a = None),代码仍然像以前一样工作.但是在这种情况下,我将在"if"块中声明变量,并且对于其他语言(如Java),该变量只能在"if"中可见.

Python中确切的变量范围如何工作以及在这种情况下编程的好方法是什么?

谢谢!

Sha*_*way 8

根据经验,范围是在三个地方创建的:

  1. 文件范围 - 也称为模块范围
  2. 类范围 - 在class块内创建
  3. 功能范围 - 在def块内创建

(这些例外有一些例外.)

分配给名称会将其保留在范围名称空间中,标记为未绑定,直到达到第一个分配.因此,对于心智模型,您要为范围中的名称指定值.