模块
模块
模块:一系列功能的集合体
定义模块:创建一个py文件就是一个模块,该py文件名就是模块名
使用模块:在要使用模块的文件中,通过 import 模块名 来导入模块
imoport module
1.编译执行模块所对应的的py文件,形成对应的pyc文件
2.产生该模块自己的全局名称空间
3.在使用该模块的全局名称空间中产生一个名字(导入的模块名)
注:
①每一个都会产生全局的名称空间,且相互不影响
②多次导入,只会编译执行模块一次,将其加载到内存,之后的都是直接对名字的引用
优点:
①从文件级别组织代码,使同特性的功能能统一管理
②可以使用系统或第三方模块(拿来主义),来提高开发效率
起别名
通过as关键字可以给模块起别名:模块一旦起名,原模块名就不能再使用
优点:
①可以简化模块名字
②可以统一功能
cmd=input(‘数据库选择 1:mysql 2:oracle’)
if cmd ==‘1’
import mysql as db
#mysql.excuse()
else:
import oracle as db
#oracle.excuse()
db.excuse()
#中是可以省略的代码
from导入
from 模块名 import 名字1,名字2......名字n
from 模块名 import *
#导入的是模块中__all__这个列表
①系统默认该列表不会收录_开头的名字
②可以自定义__all__列表来规定外界通过*可以导入的名字
注:
不建议直接导入*,因为可读性差,且极容易出现变量重名
(比如在导入模块中的a后执行的全局名称空间中再次定义了a,那么导入模块中的a就无法找寻了)
自执行(脚本)与模块区别
__name__
①在py文件作为模块使用的时候,__name__为模块名
②在py文件自执行时,__name__为字符串‘__main__’
所以可以用 if __name__==‘__main__’来判断
模块的四种存在方式
①使用python编写的.py(任意一个py文件可以作为模块)
②包:一堆py文件的集合体
③使用C编写并链接到python解释器的内置模块
④已被编译为共享库或DLL的C或C++扩展