12 模块与包
模块通俗地理解为**.py文件**,里面定义了变量、函数和类。
需要的时候就可以导入这些模块。
执行步骤
- 在python模块加载路径中查找相应的模块文件
- 将模块文件编译成中间代码
- 执行模块文件中的代码
12.1 模块分类
- 内置模块,也叫标准库,比如说random,time,大概有200多个
- 第三方模块,也称为第三方库,使用
pip install 模块名来进行安装,比如说request、Django等 - 自定义模块,自己在项目中定义一些模块
test.py
1print("这是test") 2 3def login(): 4 print("test.py中的登录") 5 6name = "zhangsan"
12.2 import导入模块
1import random #导入模块 2 3import test #导入test.py文件之后,会执行test.py中的内容。 4# 有时候会红色波浪线,可是可以正常执行。 5# 去掉红色波浪线,解决办法:右键文件所在目录,选择Mark Directory as ,选择Sources Root 6 7test.login() #调用模块的函数 8 9print(test.name) #打印变量 10
导入模块2
1# 从模块中导入指定的部分 2 3from test import login,name #只导入了login和name 4login() 5print(name)
导入模块3
1from test import * #把模块中的所有的内容导入 2login() 3print(name) 4
给模块其别名
1import test as t 2 3t.login() #调用模块的函数 4print(t.name) #打印变量 5
12.3 __name__=="__main__"
防止模块被导入强制执行代码。
保护模块中的代码
1 2if __name__ == "__main__": 3 print("这里的代码,在导入模块的时候不会被执行") 4 print("只用当前py文件作为主文件的时候,才会被执行") 5
12.4 包的基本概念
通俗来讲,包含有__init__.py文件的文件夹
包中有模块。可以将包理解为模块的<font color="red">集合</font>
包中还可以有包
1import test #当导入包时,首先执行__init__.py文件的代码 2
包的注意事项
- import导入包时,会首先执行
__init__.py文件的代码 - 不建议在
__init__.py中写python模块,保证init的内容剪刀 __all__变量:一个列表,可以控制要引入的东西(模块、变量、类)
文件夹结构
| test
|- __init__.py 在init的文件中不要写代码,只需要导入其他模块即可
1# from test import register 2__all__ = ['register'] #相当于导入register模块,等价于from test import register
|- register.py
1def res(): 2 print("注册方法方法") 3
main.py
1from test import register 2 3register.res() 4
12.5 创建包
鼠标右键->New->Python Package
