一、模块的四种形式
1.内置模块:pyrhon解释器启动自带的模块,time/random/os/sys....
2.第三方模块:pip install jieba ...已被编译的共享库
3.自定义模块:如果你自己写一个py文件,在文件内写入一堆函数,则它被称为自定义模块,即使用python编写的.py文件
4.包 :把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)
二、import.....和from.....import......
import time 优点:永不冲突
1.开辟内存空间,内存空间命名为time
2.把time.py中所有代码读入名称空间,然后运行
3.通过time.方法名 使用time模块中的方法 time.sleep(1)
from time import sleep,time #特定导入一些功能 缺点:容易与当前执行文件中名称空间中的名字冲突
from time import * #导入所有的功能 不要使用
1.开辟内存空间,内存空间命名为time
2.把time.py中所有代码读入名称空间,然后运行
3.把sleep()读入import 和 from...import.py中,因此可以直接使用方法名 如:sleep(1)
自定制模块的用途:分文件存储代码 --> 函数与函数之间分开 --> 让代码更加清晰 --> 不同的模块干不同的事
如果导入的模块文件变量名与当前文件里面的变量名重复。在导入的文件开头加入__all__ = [abc,fi] #只允许导入列表内的变量,只对from...import*的限制
三、循环导入:
#m1.py pirnt('from1.py') from m2 import x y = 'm1'
1.创建m2的名称空间
2.执行m2.py,将执行产生的名字丢到m2.py
3.在当前执行文件中拿到m2.x
#m2.py print('form m2.py') from mi import y x = 'm2'
1.创建m1的名称空间
2.执行m1.py,将执行产生的名字丢到m1.py
3.在当前执行文件中拿到m1.y
如果运行m1.py,则会报错ImportError: cannot import name 'x'
如果运行m2.py,则会报错ImportError: cannot import name 'y'
解决方案:
1.把两个文件的变量x,y都放到import 上面一行
2.定义函数,在函数中导入 # 定义函数阶段只检测语法,不执行代码
# m1.py print('from m1.py') def func1(): from m2 import x print(x)
y = 'm1'
# m2.py print('from m2.py') def func1(): from m1 import y print(y) x = 'm2'
补充:
#m1.py x = 10 from m2 import y print('m1:', x, y)
y = 20 from m1 import x print('m2:', x, y)
运行m1.py打印结果为:
四、 模块的搜索路径
内存----》内置-----》自定义
打印环境变量:
import sys
print(sys.path)
五、python文件的两种用途
1.脚本,一个文件就是整个程序,用来被执行
2.模块,文件中存放着一堆功能,用来被导入使用
转ico图片:找一张图片,再在网站上找生成图标ico的网址,把图片转成ico