首先,是关于名字空间的一个名词解释。是枯燥,但是很重要,所以要耐心些。Python使用叫做名字空间的东西来记录变量的轨迹。名字空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值。实际上,名字空间可以象Python的字典一样进行访问,一会我们就会看到。

在一个Python程序中的任何一个地方,都存在几个可用的名字空间。每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括 函数的参数和局部定义的变量。每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常 量。还有就是内置名字空间,任何模块均可访问它,它存放着内置的函数和异常。

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

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

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

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

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

象Python中的许多事情一样,名字空间在运行时直接可以访问。特别地,局部名字空间可以通过内置的 locals 函数来访问。全局(模块级别)名字空间可以通过 globals 函数来访问

locals 介绍

1 >>> def test(arg):

2 #函数 foo 在它的局部名字空间中有两个变量:arg(它的值被传入函数),和 z(它是在函数里定义的)。

3 z = 1

4 print locals()

5 >>> test(4)

6 #locals 返回一个名字/值对的字典。这个字典的键字是字符串形式的变量名字,字典的值是变量的实际值。

7 #所以用 4 来调用 foo,会打印出包含函数两个局部变量的字典:arg (4) 和 z (1)。

8 {'z': 1, 'arg': 4}

9 >>> test('doulaixuexi')

10 #locals 可以用于所有类型的变量。

11 {'z': 1, 'arg': 'doulaixuexi'}

12 >>>

globals 介绍

由此可见,发现globals 函数返回一个全局变量的字典,包括所有导入的变量。

python中locals函数_python中locals和globals函数相关推荐

  1. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

  2. python中定义数据结构_Python中的数据结构—简介

    python中定义数据结构 You have multiples algorithms, the steps of which require fetching the smallest value ...

  3. python中locals函数_Python神奇的内置函数locals的实例讲解

    摘要 本文我们介绍神奇的locals函数,包括动态创建变量和动态访问变量,以及一个应用场景. 相同属性不相邻问题 需求:有两个list,分别为list1和list2.list1中有n个对象,每个对象有 ...

  4. python local函数_python中的函数

    函数 一.函数的定义 def是可执行的代码.def创建了一个对象并将其赋值给某一变量名.def语句是实时执行的,即:def在运行时才进行评估,而在def之中的代码在函数调用后才会评估.函数本身就是一个 ...

  5. python中的json函数_python中装饰器、内置函数、json的详解

    装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...

  6. python nums函数_Python中的内置函数

    Python中有很多内置函数,不需要我们调用模块可以直接使用,而且都是常用函数的封装,下面我们来看看Python中的内置函数都有那些. 1.abs() abs()是绝对值函数,把一个负数转化为正数,数 ...

  7. python eval函数_Python中eval与exec区别 | 萧小寒

    摘要 学过JavaScript的人都知道,在JS中有一个函数叫内置函数叫eval.eval函数可计算某个字符串,并执行其中的的JavaScript代码.正是因为这个特性,所以现在很多教材都不推荐使用这 ...

  8. python函数中的变量_Python中的函数与变量

    本节内容 函数的定义方法 函数功能 函数的返回值 函数的形参与实参 全局变量与局部变量 递归 函数的作用域 匿名函数lambda 函数式编程 常用内置函数 其他内置函数 函数 函数的定义方法 函数就相 ...

  9. python 高级使用实例_Python中的高级函数map/reduce使用实例

    怎么用Python写mapreduce,请举例说明,初学者,请1.lambda # 匿名函数# 基本用法 lambda x: x**2 # 第一个参数,然后是表达式# 也可以使用如下(lambda x ...

最新文章

  1. CVPR 2019 | 西北工业大学开源拥挤人群数据集生成工具,大幅提升算法精度
  2. GridView中使用CheckBox
  3. 巅峰对决 Spring Boot VS .NET 6
  4. 理解 with递归调用 Sqlserver 树查询
  5. java 数字任意三个数_求Java编程个猜数字游戏!任意输入个数根据提示大了或小了直到选对...
  6. sp3 win xp 符号表_[转载]Windows XP with SP3 各版本全搞定(附序列
  7. 【iPod转换精灵V10.2 官方最新版】强大的视频转换功能
  8. 标准cpci接口定义_cpci接口定义精简
  9. 我的世界服务器彩虹云,《我的世界》彩虹云跑酷地图存档
  10. python pip卸载不了库,比如使用pyinstaller时greenlet报错但卸载不了
  11. 阿里云云计算工程师(ACP)认证证书及考试须知
  12. 关联规则 置信度与支持度以及Apriori算法简介
  13. Day03_【数组、ArrayList】
  14. 如何用PPT画出好看的科研图
  15. 号称全网最全CAD组合键功能详解
  16. 佳能Canon MF9200 Series 一体机驱动
  17. java和易语言对比_国外流行排行榜编程语言和易语言相比较的优势和劣势
  18. matlab实验结果图片保存
  19. 广告sdk是什么意思?广告SDK分类及用途介绍
  20. mailbox的controller

热门文章

  1. 她为什么赢得了老公的尊重
  2. 五、SALV 添加页眉Top of Page 和页脚End of Page
  3. 【React】react-infinite-scroll-component 实现滚动加载
  4. 电商技巧:如何整店商品图片下载并分类保存
  5. 【CDQ分治+FFT】LGP4566 [CTSC2018]青蕈领主
  6. callback函数详解
  7. SQL Server工具--bcp介绍与使用
  8. 用lru_cache提高性能
  9. 简述thinkphp自带队列think-queue的使用以及通过supervisor实现常驻进程
  10. squeeze()和unsqueeze()