Python语言专题

发布时间:2022-07-01 09:36:37 人气:70 作者:多测师

  名字空间

  Python 使用叫做名字空间的东西来记录变量的轨迹. 名字空间只是一个 dictionary, 它的键字就是变量名, 它的值就是那些变量的值. 实际上, 名字空间可以象 Python 的 dictionary 一样进行访问.

  局部名字空间:

  每个函数都有着自已的名字空间 -- 局部名字空间, 它记录了函数的变量, 包括函数的参数和局部定义的变量.

  全局名字空间:

  每个模块拥有它自已的名字空间 -- 全局名字空间, 它记录了模块的变量, 包括函数,类,其它导入的模块,模块级的变量和常量.

Python语言专题

  内置名字空间:

  任何模块均可访问它, 它存放着内置的函数和异常.

  当一行代码要使用变量 x 的值时, Python 会到所有可用的名字空间去查找变量, 按照如下顺序:

  局部名字空间 - 特指当前函数或类的方法. 如果函数定义了一个局部变量 x, 或一个参数 x, Python 将使用它, 并停止搜索;

  全局名字空间 - 特指当前的模块. 如果模块定义了一个名为 x 的变量, 函数或类, Python 将使用它并停止搜索;

  内置名字空间 - 对每个模块都是全局的. 作为最后的尝试, Python 将假设 x 是内置函数或变量.

  如果 Python 在这些名字空间找不到 x, 它将放弃查找并引发一个 NameError 异常, 同时传递 There is no variable named 'x' 这样一条信息.

  Python 2.2 引入了一种略有不同但重要的改变, 它会影响名字空间的搜索顺序: 嵌套的作用域. 在 Python 2.2 版本之前, 当在一个嵌套函数或 lambda 函数中引用一个变量时, Python 会在当前 (嵌套的或 lambda) 函数的名字空间中搜索, 然后在模块的名字空间. Python 2.2 将只在当前 (嵌套的或 lambda) 函数的名字空间中搜索, 然后是在父函数的名字空间中搜索, 接着是模块的名字空间中搜索. Python 2.1 可以两种方式工作, 缺省地, 按 Python 2.0 的方式工作. 但是可以把下面一行代码增加到模块的头部, 使模块工作起来象 Python 2.2 的方式:

  from __future__ import nested_scopes

  以上内容为大家介绍了Python语言专题,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/


返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线