当您在Python程序中使用名称(例如变量名函数名等)时,Python会在命名空间中创建、更改或查找该名称。命名空间是给定上下文中存在的名称的完整列表。
命名空间有两种类型,全局命名空间和局部命名空间。
对象的范围决定了程序中可以访问它的位置,默认情况下,对象只能从它们出现的名称空间内访问。全局命名空间中的对象可以从程序中的任何位置访问,这是在模块或脚本的顶层声明的名称,即不在函数、类等内部声明的名称。另一方面,在诸如函数之类的块对于该块来说是本地的,并且只能在该块内访问。
当我们定义一个函数时,Python 会为该函数设置一个本地命名空间。函数内部声明的任何对象只能在函数内部访问,该对象被称为该函数的本地对象。尝试访问其范围之外的本地对象将引发NameError.例如:
def demo():
x