8.1 模块基础
8.1 模块基础
8.1.1 模块的引入
-
函数可以封装代码,让不同功能的代码独立开来。
-
代码的进化:面条版->函数版->文件版->文件夹版->微服务(多个小项目)。
-
其中,文件版python叫作模块
-
模块存在的目的: 模块可以放多个函数,然后把多个函数分成多个文件,一个模块可以具有很多的功能。
8.1.2 模块的四种形式(***)
- 自定义模块:自己编写,直接用。
- 第三方库:需要下载后使用,如requests
- 内置模块:直接用,如time
- 文件夹版:在python中叫作包
模块的使用可以简化操作,无需开发相同功能,直接使用。
8.1.3 模块导入的三种方式
- 方式1 import
方式1 import time
# 将time文件导入到内存,将模块内容放入全局变量,内部函数名丢入全局/内置中,使用时候直接调用。
# 导入time文件,能够使用time中所有方法。
方式1步骤:
-
打开time文件,
-
把time文件内的内容读入python解释器的内存,然后把文件内的名字放入特定的模块time的名称空间。
time.spleep(0); -
test.py中会有一个time模块的名称空间,如果导入方式为‘import time as t’,则就是t变量指向time模块的名称空间
-
优点:可以拿到time里全部内容并使用。
-
缺点:占用内存较大,使用时候需要用:'time.sleep(0)'
-
方式2 from ... import
方式2 from ... import...
from a import b
from a import b,c,d...
#取出多个名字也不需要加'time',全部直接使用就可以了
from time import sleep
from time import time,sleep
#只导入指定方法,不能使用其他
方式2步骤:
(1)打开time文件;
(2)把time文件内的内容读入python解释器的内存,然后把文件内的名字放入特定的模块time的名称空间;
time.spleep(0)
(3) test.py中会有一个time模块的名称空间,如果导入方式为‘from time import sleep ,localtime’,则就是 sleep 和localtime变量指向time模块的名称空间中的sleeep和localtime。
缺点:只能拿到sleep,sleep放入全局。如果当前文件又定义一个sleep参数,则会冲突。
优点:占用内存较小,直接使用'sleep(0)'
- 方式3 from time import *
方式3 from time import *
#取出所有的名字不需要加'time',全部直接使用就可以了
- 示例
# spam.py模块文件
# 与执行文件放入同文件夹下
# __all__ #限定全部导入时只能拿到什么
__all__=['lis'] #全部导入时候只能拿到'lis'
def f1():
print('from f1')
lis=[1,2,3,4]
# main.py执行文件
#导入方式1
import spam
print(spam.lis)
spam.f1()
#导入方式2
from spam import f1,lis
print(lis)
f1()
#导入方式3
from spam import*
print(lis)
f1()
8.1.4 Python文件的两种用途
- 可以当做模块导入---->模块文件:可以有多个
- 可以当做运行文件运行--->运行文件:只能有一个
- 搜索路径以执行文件为基准
浙公网安备 33010602011771号