1.模块是什么: *****
模块是一组功能的集合
python中一个功能就是一个函数
一个py文件就是一个模块
例如: A.py 文件名A.py 模块名 A
模块的分类:
1.自定义模块 *****
(第三方模块也属于自定义 他是别的程序员写的)
关注如何自定义
2.内置函数 ****
是C语言写的 然后连接到朋友python解释器中
例如 : time模块
关注如何使用
3.已经编译为DLL C 或c++ ***
不需要知道是怎么来的 会用就行
4 包 *****
包实际上是包含一堆模块的文件夹
对于以上四种模块 ,他们的使用方式 是一致的
如何定义模块: *****
创建一个py文件 把你的功能写到文件中去
如何使用模块:*****
import 关键字 用于导入模块到当前文件夹中
例如: import time
当执行import 做了什么? ****
1.创建了一个命名空间
2.执行被导入的py中的代码 将里面的名字和对应关系 储存到命名空间中
3.在执行文件中 创建一个名字 改名字指向的地址就是 第一步创建的命名空间(模块的命名空间)
执行文件和被导入的模块的命名空间 是相互独立的 ****
在被导入模块中 所有的名字使用的都是自己空间中的 和调用者无关
import 的其他写法 *****
1.import xxx as xxx
给模块取别名 用于简化书写
2.import xxx,xxxxx
一次导入多个模块
3. from xxx import xxx
从模块中导入某个名字到当前名称空间
注意 要避免名称冲突
如果冲突了 按照就近查找原则
4.from xxx import xxx,xxx,xxxx
从模块中导入多个名称
5.from xxx import *
从模块中导入所有名称
__all__用于控制 使用者可以使用那些名称
6.from xxx import xx as xx
取别名
from 和import 除了导入的名称 不同 其他特性一致
py文件的两种执行方式 *****
1.作为执行文件 (右键run)
2.作为模块被导入
__name__这个名称 可以获取当前执行状态
如果是__main__说明是当前执行文件
否者 说明是作为模块
于是乎有了以下代码
if__name__=="__main__" :
print ("作为执行文件")
else:
print("作为模块导入了")