首页 » InfoTech »

用locals()和globals()函数查看Python符号表

2018年9月27日 / 3次阅读
Python

打开支付宝首页,搜索“529018372”,即可领取红包!可重复领。

特色图片

程序运行起来后,内存中有各个层级的namespace,Python也不例外,有人喜欢把namespace成为符号表,在Python中,namespace其实就是一个python的Dict变量。

在Python中,我们可以很方便的用两个内置的函数,来查看符号表(namespace),locals()和globals(),顾名思义,一个查局部的,一个查全局的。

def test(arg):
    z = 1
    print(locals())
 
test(6)
test('maixj.net')

print(globals())

运行结果:

D:\pytest>python test.py
{'z': 1, 'arg': 6}
{'z': 1, 'arg': 'maixj.net'}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_f
rozen_importlib_external.SourceFileLoader object at 0x00712330>, '__spec__': Non
e, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__fil
e__': 'test.py', '__cached__': None, 'test': <function test at 0x0027B660>}

这个全局符号表内容还不多,再看看这个,我自己用来做python随手测试的窗口内容:

>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {
}, '__builtins__': <module 'builtins' (built-in)>, 'a': {...}, 'b': 'aa\nbb', 'c
': 'abc', '人': 123, 'list1': ['1', 1, 5, 1, 2, 3], 'list2': ['1', 1, 5, 1, 2, 3
], 'list3': [6, 2, 3, 4], 'list4': [5, 2, 3, 6, 2, 3, 4], 'list6': [1, [9, 3]],
'list7': [4, [9, 6]], 'list8': [1, [9, 3], 4, [9, 6]], 'x': range(0, 5), 'jj': [
'a', 'b', 'c'], 'ss': '.', 'args': (3, 6)}
>>>
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__pack
age__', '__spec__', 'a', 'args', 'b', 'c', 'jj', 'list1', 'list2', 'list3', 'lis
t4', 'list6', 'list7', 'list8', 'ss', 'x', '人']
>>>
>>> len(globals())
22
>>> len(dir())
22
>>>

dir()只是把符号名称全部列出来,globals()还要将符号对应的值列出。注意一个细节:以上代码中包含一个变量为“人”的变量,这是可以的,但是不符合一般的Python编程规范,我这里只是测试。

本文链接:http://www.maixj.net/ict/locals-globals-18994
云上小悟 麦新杰(QQ:1093023102)

相关文章

评论是美德

无力满足评论实名制,评论对非实名注册用户关闭,有事QQ:1093023102.


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目

AD

ppdai

©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top