首页 > 编程语言 > 详细

Python名称空间的理解

时间:2020-03-18 22:29:00      阅读:54      评论:0      收藏:0      [点我收藏+]

python程序执行期间会有3个活动的命名空间,按照变量定义的位置,可以划分为以下3类:

  Local,局部命名空间,每个函数所拥有的命名空间,记录了函数中定义的所有变量,包括函数的入参、内部定义的局部变量。

  Global,全局命名空间,每个模块加载执行时创建的,记录了模块中定义的变量,包括模块中定义的函数、类、其他导入的模块、模块级的变量与常量。

  Built-in,python自带的内建命名空间,任何模块均可以访问,放着内置的函数和异常。

程序执行过程访问名称空间顺序是Local-->Global-->Built-in.

eg:

print(id(locals()))
print(id(globals()))
print(‘Built-in:‘ + str(locals()))
g=7
class Test(object):
y=2
def __init__(self,x):
print(‘--------‘)
print(g)
print(‘Local:‘ + str(locals()))
print(‘---->‘)
print(‘Global:‘ + str(globals()))
print(‘-------‘)
pass

 out:

140458094155656
140458094155656
Built-in:{‘__builtins__‘: <module ‘builtins‘ (built-in)>, ‘__doc__‘: None, ‘__spec__‘: None, ‘__package__‘: None, ‘__name__‘: ‘__main__‘, ‘__cached__‘: None, ‘__loader__‘: <_frozen_importlib_external.SourceFileLoader object at 0x7fbef2ca3eb8>, ‘__file__‘: ‘/home/z/PycharmProjects/scripts/yong.py‘}
--------
7
Local:{‘self‘: <__main__.Test object at 0x7fbef0ff8400>, ‘x‘: <function hello at 0x7fbef2cf0048>}
---->
Global:{‘Test‘: <class ‘__main__.Test‘>, ‘__builtins__‘: <module ‘builtins‘ (built-in)>, ‘__doc__‘: None, ‘g‘: 7, ‘__spec__‘: None, ‘__package__‘: None, ‘__name__‘: ‘__main__‘, ‘__cached__‘: None, ‘__loader__‘: <_frozen_importlib_external.SourceFileLoader object at 0x7fbef2ca3eb8>, ‘__file__‘: ‘/home/z/scripts/yong.py‘}
-------

     

 

Python名称空间的理解

原文:https://www.cnblogs.com/linux-1921/p/12520425.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!