模块的四种形式
- 自定义模块
- 第三方库
- 内置模块
- 包
import和from...import
import
import导入 , 引用的时候要加前缀
import发生的三件事情:
- 生成一个名字为time的名称空间
- 运行time.py文件,然后把生成的变量丢入 time的名称空间内
- run文件指向 time这个名称空间, time.方法名()
from...import
from...import导入, 不需要使用前缀
from...import发生的三件事情:
- 生成一个名字为time的名称空间
- 运行time.py文件,然后把生成的变量丢入 time的名称空间内
- run文件指向 import后面的一个(多个)方法名, 所以直接 方法名()
循环导入问题
m4.py
from m2 import y
x = 10
# m2.py
from m1 import x
y = 20
- 执行m1.py
- m1.py运行到
from m2 import y
,要运行m2.py - m2.py运行到
from m1 import x
,要运行m1.py - 进入死循环
解决方案
m2.py
def f1():
from m2 import y
x = 10
# m2.py
def f1():
from m1 import x
y = 20
模块的搜索路径
内存 --> 内置 --> 自定制 --> 环境变量(sys.path)
Pthon文件的两种用途
- 执行文件: 当前运行的文件
- 模块文件: 被当做模块导入的文件
if __name__ == '__main__'
在执行文件中运行__name__ == '__main__'
, 在被当做模块导入的时候__name__ == 模块文件名
pyinstaller库的下载
pyinstaller库 可以将.py文件转化 为.EXE执行文件
# pyinstaller –i rose.ico(图片文件,百度转一个) –F rose.py(python文件)
pyinstaller –i rose.ico –F rose.py