关于模块的使用
1、 模块的内建函数
在模块进行导入的时候,使用的是import语句,在import的时候,实际使用的是__import__()函数,例如在使用import sys的时候,实际上的调用是使用__import__("sys")
globals()表示为调用者的全局字典,而locals()表示为局部名称空间字典
reload()内建函数可以重新导入一个已经导入的模块,例如reload(modulename),在很多模块中都进行导入import的时候,实际上只会导入一次,是为了性能和效率上的考虑,如果要强制再次进行导入,那么必须使用reload函数
2、 载入时执行的模块
被导入模块的顶层代码将被直接执行,例如设定全局变量,类和函数的声明;当有检查__name__的时候,也会直接执行
一个模块只被加载一次,无论它被导入多少次,加载只在第一次导入的时候发生
导入到当前的命名空间的名称,使用from A import B,从而不需要使用句点来进行访问
3. __future__
表示为python中的新特性
名称空间是名称到对象的映射,向名称空间添加名称的操作过程涉及到绑定标志符到指定对象的操作,删除一个名字叫解除绑定。
内建名称空间为__builtins__——》全局名称空间——》局部命名空间
4、 模块用来组织python代码,包则是用来组织模块的,在模块查找的时候,sys.path是查找路径,在其中可以使用append方法来增加路径,sys.path是一个字典
5、 包时一个有层次的文件目录结构,定义了一个由模块和子包组成的python应用程序的执行环境
__init__.py文件,初始化模块的信息,可以为空,一般在文件夹中是必须存在的
6、 顶层的包到子层的包使用,来进行引用
import A,B,C
from A.B import C
7、 所有导入都被认为是绝对导入,在使用import的时候,注意会覆盖标准模块,相对导入仅仅在使用from。。import语句中
8、 自动载入的模块:__buildin__和__buildins__是相同的,在使用阻止模块属性导入的时候,使用import module _A,表示不导入A,在不阻止导入的时候,使用下划线开头即可,
9、 源代码的编码,使用方式为coding:-utf-8,表示为utf-8编码,主要是注释即可,其他的字符是为了好看。