甘肃做网站多少钱,android开发工程师,个人推广网站,自己做产品品牌网站Python命名空间(Namespaces)和作用域(Scopes)讲座命名空间(Namespace)命名空间(Namespace)#xff0c;是名称到对象的映射。命名空间提供了在项目中避免名字冲突的一种方法。命名空间是独立的#xff0c;没有任何关系的#xff0c;所以一个命名空间中不能有重名#xff0c;…Python命名空间(Namespaces)和作用域(Scopes)讲座命名空间(Namespace)命名空间(Namespace)是名称到对象的映射。命名空间提供了在项目中避免名字冲突的一种方法。命名空间是独立的没有任何关系的所以一个命名空间中不能有重名但不同的命名空间是可以重名而没有任何影响——不同命名空间中的名称之间绝对没有关系请牢记这一点。多个名称(在多个作用域内)可以绑定到同一个对象。这在其他语言中称为别名。在处理不可变的基本类型(数字字符串元组)时可以安全地忽略它。但是对于可变对象如列表字典和大多数其他类型在某些方面表现得像指针如果函数修改了作为参数传递的对象调用者将看到更改。几个命名空间的例子存放内置函数的集合(包含 abs() 这样的函数名和内建的异常名称 BaseException、Exception 等等)模块中的全局名称函数中的局部名称包括函数的参数和函数中的变量。 从某种意义上说对象的属性集合也是一种命名空间的形式。命名空间查找顺序当一行代码要使用变量 x 的值时Python 会到所有可用的名字空间去查找变量按照如下顺序1、局部命名空间特指当前函数或类的方法。如果函数定义了一个局部变量 x或一个参数 xPython 将使用它然后停止搜索。2、全局命名空间特指当前的模块。如果模块定义了一个名为 x 的变量函数或类Python 将使用它然后停止搜索。3、内置命名空间对每个模块都是全局的。作为最后的尝试Python 将假设 x 是内置函数或变量。4、如果 Python 在这些名字空间找不到 x它将放弃查找并引发一个 NameError 异常如NameError: name aa is not defined。嵌套函数的情况1、先在当前 (嵌套的或 lambda) 函数的命名空间中搜索2、然后是在父函数的命名空间中搜索3、接着是模块命名空间中搜索4、最后在内置命名空间中搜索命名空间的生命周期不同的命名空间在不同的时刻创建有不同的生存期。1、内置命名空间在 Python 解释器启动时创建会一直保留不被删除。2、模块的全局命名空间在模块定义被读入时创建通常模块命名空间也会一直保存到解释器退出。3、当函数被调用时创建一个局部命名空间当函数返回结果 或 抛出异常时被删除。每一个递归调用的函数都拥有自己的命名空间。作用域(Scopes)变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。