模块与包
一 模块
1、什么是模块
最常常见的场景,一个模块就是包含了一组功能的python文件,例如module.py,模块名是module
可以使用import module,四个通用类别:
1 使用python编写的.py文件
2 已被编译为共享库或DLL的C或C++扩展
3 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)
4 使用C编写并链接到python解释器的内置模块
2、为什么要用模块
1、从文件级别组织程序,更方便管理
2、拿来主义,提升开发效率
3、如何使用模块-》import spam
第一次导入模块,会发生3件事,重复导入只会引用之前加载好的结果
1、产生一个新的名称空间
2、运行spam.py代码,产生的名字都存放于1的名称空间中,运行过程中global关键字指向的就是该名称空间
3、在当前名称空间拿到一个名字spam,该名字指向1的名称空间
引用spam.py中名字的方式:spam.名字==强调:被导入的模块在执行过程中使用自己独立的名称空间作为全局名称空间==
起别名:import spam as sm
一行导入多个模块:import time,sys,spam
4、如何使用模块-》from 模块名 import 名字
优点:引用时不用加前缀,简单
缺点:容易与当前名称空间的名字冲突
from spam import money as m
from spam import money,read1,read2,change
from spam import * #*包含除了下划线开头以外所有的名字
5、一个python文件的两种用途
1、当做脚本执行:__name__ == ‘__main__‘
2、当做模块被导入使用:__name__ == ‘模块名‘
if __name__ == ‘__main__‘:
pass
6、模块的搜索路径
内存----》内置模块-----》sys.path
二 包
1、什么是包
包就是一个包含了__init__.py文件的文件夹(可以往该文件夹下放一堆子模块)
2、包的使用
注意:但凡是在导入时,出现.,这是导入包才有的语法,.的左边必须是一个包,使用的时候没有这种限制