Python有两个内置的函数,locals() 和globals(),它们提供了基于字典的访问局部和全局变量的方式。

首先,是关于名字空间的一个名词解释。是枯燥,但是很重要,所以要耐心些。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

2

3

4

5

6

7

8

9

10

11

12

>>>

def test(arg):

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

z = 1

print locals()

>>> test(4)

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

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

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

>>> test('doulaixuexi')

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

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

>>>

globals 介绍

1

2

3

4

5

6

7

8

9

10

11

12

>>>

from sys

import *

>>>

print globals()

{'setrecursionlimit':

in function setrecursionlimit>,

'dont_write_bytecode': False,

'getfilesystemencoding':

in function getfilesystemencoding>,

'long_info': sys.long_info(bits_per_digit=15, sizeof_digit=2),

'stdout': ,

'text': ,

'meta_path': [],

'exc_clear':

in function exc_clear>,

'prefix': 'C:

\\Python27', 'getrefcount':

in function getrefcount

......省略很多

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

from module import 和 import module之间的不同。使用 import module,模块自身被导入,

但是它保持着自已的名字空间,这就是为什么你需要使用模块名来访问它的函数或属(module.function)

的原因。但是使用 from module import,实际上是从另一个模块中将指定的函数和属性导入到你自己的名字空间,这就是为什么你可以直接访问它们却不需要引用它们所来源的模块的原因。

python globals locals_python locals globals相关推荐

  1. python globals locals_Python globals()和locals()比较

    Python的两个内置函数,globals()和locals() ,它们提供了基于字典的访问局部和全局变量的方式. globals()是可写的,即,可修改该字典中的键值,可新增和删除键值对. 而loc ...

  2. 21 Python模块、import语句、搜索路径、变量、命名空间和作用域、dir函数、globals()和locals()函数、reload()函数、Python中的包

    21Python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  3. Python函数之globals、locals、global、nonlocal

    Python函数之globals.locals.global.nonlocal 1.内置函数globals locals a = 100 lst = [11, 22, 33]# print(globa ...

  4. python的globals函数_Python内置函数之globals()与locals()

    Python内置函数globals() 函数与locals()函数简介. 在Python中,函数拥有自己的作用域,或者称为命名空间.在函数内访问某个变量会优先在函数自己的命名空间中进行访问. 而要想知 ...

  5. python locals_Python locals()

    python locals Python locals() function returns a dictionary representing the current local symbol ta ...

  6. Python技巧——巧用globals

    有些许人会知道globals函数.globals函数返回当前命名空间的所有变量.函数.类.模块以及其值的字典.通俗点讲,就是你正在编程的空间有啥东西.通过dir函数,可以了解模块的所有信息的名字,但没 ...

  7. python的globals函数_python globals函数

    Python globals函数 最后更新于:2020-03-21 12:02:44 在前面我们讲解了python内置函数locals,内置函数locals直接以字典的形式返回当前位置的所有局部变量, ...

  8. python中globals()_python中globals()的原因是什么?

    在python中使用globals()函数的原因是什么?它只返回全局变量的字典,这些变量已经是全局的,所以它们可以在任何地方使用-我只是好奇地问,想学Python. def F(): global x ...

  9. python-(5-3)内置函数-zip locals globals sorted filter map

    文章目录 一. zip() 二. locals() 和 globals() 三. sorted() 四. filter() 和 map() 一. zip() 作用:将多个可迭代的内容进行合并 需求:已 ...

最新文章

  1. Linux下查看操作系统的位数和系统名称版本信息
  2. 分享几个在线生成网址二维码的API接口
  3. linux挂载cifs磁盘_linux使用windows磁盘,挂载共享目录
  4. Delphi获得计算机系统配置,用Delphi获取本地计算机名称和IP地址
  5. 数据科学 IPython 笔记本 9.6 聚合:最小、最大和之间的任何东西
  6. 我的购机(手机)之路
  7. SpringMVC -- 梗概--源码--贰--RestFul收参(了解) @PathVariable
  8. 操作元素之表单属性设置
  9. 关于geekcode
  10. VS2019 + Qt ERROR MSB4181 QtRunwork 返回了false,但未记录错误
  11. hdu 4302 Holedox Eating 线段树去维护蛋糕!! 多校联合赛第三题
  12. spring in action 4 第6章 视图分发
  13. 从零开始开发Python程序(五)—— 把文字排版成一张图片
  14. 2. 导弹防御系统(动态规划)
  15. 计算机装系统找不到硬盘,电脑重装系统找不到硬盘驱动器怎么办?
  16. 办公局域网内的打印机如何做共享?
  17. 5.3.4—二叉查找树—Convert Sorted Array to Binary Sear Tree
  18. 如何拿下头条号原创标?这里有份6000字的指南
  19. 用数字暗示我喜欢你_我喜欢数字!
  20. 51CTO专访人人网黄晶:WEB开发需要随需应变(2)

热门文章

  1. docker安装redis教程
  2. Linux基础操作二
  3. 终端SSH连接linux
  4. SVM与Logistic回归的区别
  5. 河北最新道路运输安全员考试真题题库及答案解析
  6. linux中替换命令详解,linux中sed命令字符串替换的用法详解
  7. 模拟试题国家计算机二级考试:制作Flash相册
  8. [转载]亲历:探访乔布斯的低调豪宅(组图38)_我是亲民_新浪博客
  9. HAWQ技术解析(四) —— 启动停止
  10. 使用手机安装Windows系统------DriveDroid