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