模块命名空间

# -*- coding: utf-8 -*-
#python 27
#xiaodeng
#模块命名空间



#模块最好理解为变量名的封装,也就是定义想让系统其余部分看见变量名的场所。
#python会建立模块对象,以包含模块文件内所赋值的所有变量名
#模块就是命名空间,而存在于模块之内的变量名就是模块对象的属性

#在模块文件的顶层每一个赋值了的变量名都会变成该模块的属性



#下面正式的来说明模块加载和作用域的概念以了解其原因?

#模块语句会在首次导入时执行
    #系统中,模块在第一次被导入时,无论在什么地方python都会创建空的模块对象,并逐一执行该模块文件内的语句

#顶层的赋值语句会创建模块属性  #593页
    #在导入时,文件顶层赋值变量的语句(如:=和def、class语句等等),会建立模块对象的属性,赋值的变量名会存储在模块的命名空间内

#模块的命名空间能通过属性__dict__或dir()来获取
    #由导入而建立的模块的命名空间是字典,可通过模块对象相关联的内置的__dict__属性来读取
#模块是一个独立的作用域(本地变量就是全局变量)
原文地址:https://www.cnblogs.com/dengyg200891/p/4921783.html