模块
1.模块是什么? 模块:一组功能的集合
功能:在python中,一个功能就是一个函数;一个py文件就是一个模块
2.为什么要用模块?
借鉴思想:可以极大的提升开发效率
自定义模块:抽取我们自己程序中要用的功能,定义成模块,然后程序的各部分都去模块中调
用,可以较少代码冗余。
3.如何使用模块?
大前提:注意区分 执行文件 vs 被导入文件
模块类型的分类:
1.自定义模块(第三方模块也属于自定义模块)
2.内置模块 (c语言编写,连接到python解释器中,如time模块)
3.已经编译为DLL c or c++
4.包(包含一堆模块的文件夹)
如何自定义模块?
创建一个py文件,把功能写到该文件中
如何使用模块?
import:关键字,用于导入模块到当前文件中
如spam.py,模块名则是spam,在执行文件中写import spam就调用了该模块
当执行import时,会发生:
1.创建一个模块的namespace
2.执行被导入的文件spam.py,将模块中的name和地址的关系,都存储到模块的
namespace中。
3.在执行文件中,创建一个name,该name指向的地址就是第一步创建的namespace,执
行文件和被导入的模块namespace 是相互独立的。
import 的其他写法:
1.import xxx as xxx
# 给模块取别名,可以用别名直接调用
2.import xxx,xxx
# 一次导入多个模块
3.from xxx import xxx
# 从模块中导入名字到当前执行文件的namespace中
# 如果name冲突了,则按就近原则取值
4.from xxx import xxx,xxx
# 从模块中导入多个名字
5.from xxx import * #从模块中导入所有的name
6.from xxx import xx as xx
#取别名
#from和import出来导入的名称不同 其他性质一致
py文件的两种执行方式: 1.作为执行文件
2.作文模块被导入
如何判断py文件当前执行状态:
__name__这个名称可以获取当前执行状态
如果是__main__则是当前的执行文件,否则是作为模块被导入
if__name__ =='__main__':
print('作为执行文件')
else:
print('作为模块导入')
重复导入模块时,模块中的代码不会重复执行,仅在第一次导入时执行
模块的搜索顺序: 内存中已经加载的----->内置模块------->sys.path
查看内存中已经加载的模块
import sys
print(sys.modules)
for i in sys.modules
print(i)
查看sys.path (环境变量)
import sys
print(sys.path)
# 手动添加一个路径到环境变量中
sys.path.append(r'文件的地址’)
print(sys.path)