使用命令pyrasite-shell pid,可以与进程进行shell交互,获取,在shell里执行globals(),可以获取整个进程的全部全局变量,比如django应用、flask应用的变量,而不是获取某个模块的全部全局变量,更新信息:https://www.cnblogs.com/shengulong/p/8044132.html

The globals() function returns a dictionary containing the variables defined in the global namespace. When globals() is called from a function or method, it returns the dictionary representing the global namespace of the module where the function or method is defined, not from where it is called.

----摘自:https://thepythonguru.com/python-builtin-functions/globals/

在python中,变量赋值是引用,指向相同的内容。

举例:如图

globals() 函数会以字典类型返回当前位置的全部全局变量。

Python 内置函数 locals() 和globals()

1》这两个函数主要提供,基于字典的访问局部变量和全局变量的方式。

python 使用叫做名字空间的东西来记录变量的轨迹。名字空间是一个字典 ,它的键就是字符串形式的变量名字,它的值就是变量的实际值。

名字空间可以像 Python 的 dictionary 一样进行访问。

在一个 Python 程序中的任何一个地方,都存在几个可用的名字空间。

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

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

还有就是内置名字空间, 任何模块均可访问它,它存放着内置的函数和异常。

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

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

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

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

如果 Python 在这些名字空间找不到 x,它将放弃查找并引发一个 NameError 异常,

同时传递 There is no variable named 'x' 这样一条信息.

3》名字空间在运行时直接可以访问。局部名字空间可以通过内置的 locals 函数来访问。全局 (模块级别) 名字空间可以通过内置的 globals 函数来访问。

locals 对局部 (函数) 名字空间做了些什么,globals 就对全局 (模块) 名字空间做了什么。

然而 globals 更令人兴奋,因为一个模块的名字空间包含了模块级的变量和常量,它还包括了所有在模块中定义的函数和类,以及任何被导入到模块中的东西。

4》回想一下 from module import 和 import module 之间的不同?

使用 import module,模块自身被导入,但是它保持着自已的名字空间,

这就是为什么您需要使用模块名来访问它的函数或属性: module.function 的原因。

但是使用 from module import,实际上是从另一个模块中将指定的函数和属性导入到您自己的名字空间,

这就是为什么您可以直接访问它们却不需要引用它们所来源的模块的原因。

使用 globals 函数,您会真切地看到这一切的发生。

5》locals 是只读的,不可修改, 而globals可以修改,原因是:

locals()实际上没有返回局部名字空间,它返回的是一个拷贝。所以对它进行修改,修改的是拷贝,而对实际的局部名字空间中的变量值并无影响。

globals()返回的是实际的全局名字空间,而不是一个拷贝: 与 locals 的行为完全相反。

所以对 globals 所返回的 dictionary 的任何的改动都会直接影响到全局变量的取值。

例一:执行文件:python module1.py

#!/usr/bin/python3

from pprint importpprint

a= 100b= 4

deffoo():

x= 100 #x is a local variable

print(x)

pprint(globals())

输出结果:

{'__builtins__': ,'__cached__': None,'__doc__': None,'__file__': './module1.py','__loader__': <_frozen_importlib_external.sourcefileloader object at>,'__name__': '__main__','__package__': None,'__spec__': None,'a': 100,'b': 4,'foo': ,'pprint': }

__package__这种以双下划线开始和结束的key是python解释器定义的。最后面的是模块module1定义的变量:a/b/foo/pprint

例二:执行python module2.py。

模块module1.py内容:

#!/usr/bin/python3

from pprint importpprint

a= 100b= 4

deffoo():

x= 100 #x is a local variable

pprint(globals())

模块module2.py内容:

#!/usr/bin/python3

importmodule1

from

x= 100y= 2module1.foo()

输出结果:

{'__builtins__': { ... }'__cached__': '/home/overiq/tmp/__pycache__/module1.cpython-35.pyc','__doc__': None,'__file__': '/home/overiq/tmp/module1.py','__loader__': <_frozen_importlib_external.sourcefileloader object at>,'__name__': 'module1','__package__': '','__spec__': ModuleSpec(name='module1', loader=<_frozen_importlib_external.sourcefileloader object at>, origin='/home/overiq/tmp/module1.py'),'a': 100,'b': 4,'foo': ,'pprint': }

例三:执行python test1.py

test.py

#/usr/bin/env python#-*- coding:utf-8 -*-

from pprint importpprint

a=100b=4c=globals()

c['var1'] = 'right'

deffoo():

x='局部变量'd=globals()

d['var2'] = 'neibu'

printx

foo()

test1.py

#/usr/bin/env python#-*- coding:utf-8 -*-

from pprint importpprintfrom test importafrom test importvar1,var2

pprint(a)

pprint(var1)

pprint(var2)

输出结果:

局部变量

100

'right'

'neibu'

例四:执行python test4.py。使用global声称为全局变量

test4.py内容:

#/usr/bin/env python#-*- coding:utf-8 -*-

from pprint importpprint

a=2b=4

deffun():globala

a= a+1b=40pprint(a)

pprint(b)

fun()

pprint(a)

pprint(b)

输出结果:

3

40

3

4

例五:执行python test4.py。在函数中直接使用全局变量。所谓全局是指模块test4.py内部。

test4.py内容:

#/usr/bin/env python#-*- coding:utf-8 -*-

from pprint importpprint

a=2b=4

deffun():globala

a= a+1pprint(a)

pprint(b)

fun()

pprint(a)

pprint(b)

输出结果:

3

4

3

4

参考:

https://thepythonguru.com/python-builtin-functions/globals/

http://www.runoob.com/python/python-func-globals.html

https://blog.csdn.net/sxingming/article/details/52061630

python的globals函数_python的globals()使用相关推荐

  1. python中locals函数_python中locals和globals函数

    首先,是关于名字空间的一个名词解释.是枯燥,但是很重要,所以要耐心些.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值.实际上, ...

  2. python的globals函数_python globals函数

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

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

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

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

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

  5. python中help函数_Python help()函数

    python中help函数 Python help() function is used to get the documentation of specified module, class, fu ...

  6. python反序数函数_python逆序函数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python sorted()函数 list内置一个方法sort(),可以实现对 ...

  7. close()是不是python内置函数_python 内置函数

    abs( x ) abs() 函数返回数字的绝对值. all(iterable) all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则 ...

  8. python反序数函数_python反序函数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 是一个对象并且返回反序排序的列表功能(9)enumerate() 返回的是一个对 ...

  9. python中pop函数_Python中的Pop函数

    python中pop函数 什么是弹出功能? (What is the pop function?) The method pop() removes and returns the last elem ...

最新文章

  1. Google设想将《黑镜》情节变为现实,但要你的隐私作交换
  2. [IOI2008] Fish 鱼
  3. 第18章 类加载机制与反射
  4. WebSocket 从入门到写出开源库
  5. 等差素数列(素数筛暴力)
  6. [C++11]共享智能指针shared_ptr指定删除器
  7. 微软官网真的是一个神奇的地方,高清壁纸,直接下载
  8. [论文阅读] Looking for the Detail and Context Devils: High-Resolution Salient Object Detection
  9. Linux命令备忘实例——排序和基本统计命令
  10. 【科研】施一公:我有6个办法提高英文科研写作能力
  11. asp.net 转换人民币大小金额
  12. 数据结构与算法 - 图论
  13. 格拉布斯准则异常数据_异常处理准则和最佳实践
  14. EXT2文件系统简介
  15. allergo 命令
  16. SPIR-V*:面向 OpenCL™ 工作负载的英特尔® 显卡编译器默认接口
  17. SCCM制作启动镜像和U盘引导装机记录
  18. 78行Python代码教你找回微信撤回的消息
  19. 如何成为一名产品经理?这是我自学产品的8个方法
  20. jQuery grid plung's Documentation

热门文章

  1. Windows快捷打开服务的命令查询表
  2. 虚拟机三种网络连接方式
  3. Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。
  4. 把一个数随机分成n份,随机数字和等于这个数字
  5. 网络出口究竟选择防火墙,还是路由器
  6. ARFoundation入门教程11-地理空间和云锚点的配置
  7. 麦道夫骗局告诉我们的10件事
  8. 二部图判定算法之染色法
  9. 如何使用QPST工具
  10. html怎么做一个正方形,纯 CSS 实现自适应正方形