目录
- 模块的四种形式
- 模块
- 包
- 导入模块
- 导入包
- 1.系统自带软件--》不需要安装
- 2.需要下载的软件
- 3.自定义软件
- import和from...import
- 循环导入问题
- 解决方法一:
- 解决方法二:
- 模块的搜索路径
- Python文件的两种用途
模块的四种形式
模块
就是从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名是test.py的话,它的对应模块名就是test)
包
用来从逻辑上组件模块,本质就是一个目录(必须带有一个__init__.py
文件)
导入模块
本质就是把python文件解释一遍
导入包
本质就是执行该报下的__init__.py
文件;如果要导入包下面的模块:需要先导入包,然后从包下的__init__.py
文件中再导入该包下的模块
python可以看成是手机--》pip看成应用管家--》模块就是应用软件
1.系统自带软件--》不需要安装
2.需要下载的软件
3.自定义软件
1.python内置模块:python解释器启动自带的time/random/os/sys
2.pip安装的模块,pip install jieba
3.自定义模块--》自定义代码
4.包(模块)-》未来详细讲
import和from...import
一般使用import或者from...import导入模块
import time time.time()
模块的重复导入会直接饮用之前创造好的结果,不会重复执行模块的文件,即重复导入会发生:spam=spam=模块名称空间的内存地址
from time import time time()
使用import module
时,module本身被引入,但是保存它原有的命名空间,所以我们需要使用module.name这种方式访问它的 函数和变量。
from module import
这种方式,是将其它模块的函数或者变量引到当前的命名空间中,所以就不需要使用module.name这种方式访问其它的模块的方法了。
循环导入问题
# m1.py form m2 import y x = 10 print('m1:',x, y)
# m2.py form m1 import x y = 20 print('m2:',x, y)
运行m1,会发生报错:ImportError: cannot import name ‘y‘
解决方法一:
将定义变量放到导入模块之前
# m1.py x = 10 form m2 import y print('m1:',x, y)
# m2.py y = 20 form m1 import x print('m2:',x, y)
解决方法二:
将导入模块放到函数定义中
# m1.py x = 10 def func1(): form m2 import y print('m1:',x, y) func1()
# m2.py y = 20 def func2(): form m1 import x print('m2:',x, y) func2()
模块的搜索路径
内存 --> 内置 --> 自定制 --> 环境变量
Python文件的两种用途
- 执行文件: 当前运行的文件
- 模块文件: 被当做模块导入的文件
if __name__ == '__main__'
在执行文件中运行__name__ == ‘__main__‘
, 在被当做模块导入的时候__name__ == 模块文件名