# -*- coding: utf-8 -*-#python 27#xiaodeng#模块命名空间#模块最好理解为变量名的封装,也就是定义想让系统其余部分看见变量名的场所。#python会建立模块对象,以包含模块文件内所赋值的所有变量名#模块就是命名空间,而存在于模块之内的变量名就是模块对象的属性#在模块文件的顶层每一个赋值了的变量名都会变成该模块的属性#下面正式的来说明模块加载和作用域的概念以了解其原因?#模块语句会在首次导入时执行 #系统中,模块在第一次被导入时,无论在什么地方python都会创建空的模块对象,并逐一执行该模块文件内的语句#顶层的赋值语句会创建模块属性 #593页 #在导入时,文件顶层赋值变量的语句(如:=和def、class语句等等),会建立模块对象的属性,赋值的变量名会存储在模块的命名空间内#模块的命名空间能通过属性__dict__或dir()来获取 #由导入而建立的模块的命名空间是字典,可通过模块对象相关联的内置的__dict__属性来读取#模块是一个独立的作用域(本地变量就是全局变量)