Python两个内置函数 locals 和globals(学习笔记)
Python两个内置函数――locals 和globals 这两个函数主要提供,基于字典的访问局部和全局变量的方式。 每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量。每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。还有就是内置名字空间,任何模 当一行代码要使用变量 x 的值时,Python会到所有可用的名字空间去查找变量,按照如下顺序: 1.局部名字空间 - 特指当前函数或类的方法。如果函数定义了一个局部变量 x,Python将使用这个变量,然后停止搜索。 如果Python在这些名字空间找不到 x,它将放弃查找并引发一个 NameError 的异常,同时传递 象Python中的许多事情一样,名字空间在运行时直接可以访问。特别地,局部名字空间可以通过内置的 locals 函数来访问。全局(模块级别)名字空间可以通过 globals 函数来访问 locals 介绍 >>> 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 介绍 >>> from sys import * >>> print globals() {'setrecursionlimit': <built-in function setrecursionlimit>,'dont_write_bytecode': False,'getfilesystemencoding': <built-in function getfilesystemencoding>,'long_info': sys.long_info(bits_per_digit=15,sizeof_digit=2),'stdout': <idlelib.rpc.RPCProxy object at 0x02110850>,'text': <function text at 0x02111A70>,'meta_path': [],'exc_clear': <built-in function exc_clear>,'prefix': 'C:Python27','getrefcount': <built-in function getrefcount 由此可见,发现globals 函数返回一个全局变量的字典,包括所有导入的变量。
def foo(arg,a): x = 1 y = 'xxxxxx' for i in range(10): j = 1 k = i print locals() #调用函数的打印结果 foo(1,2) #{'a': 2,'i': 9,'k': 9,'j': 1,'arg': 1,'y': 'xxxxxx','x': 1}
from module import 和 import module之间的不同。使用 import module,模块自身被导入, locals 是只读的,globals 不是 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |