一、定义
模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件。
包:用来从逻辑上组织模块,本质就是一个目录(必须有一个__init__.py文件)
二、导入方法
import module_name
import module1_name,module2_name
from module import *(不建议使用)
from module import 方法名 as 别名
三、import本质(路径搜索和搜索路径)
import 模块名
第一种直接import 模块名的,当需要使用模块里的类、函数、变量等时,需要模块名字+类/函数/变量,表示你要使用这个模块下的类、函数、变量等,需要指定一下。实际上这种方式相当于把 “模块名.py” 这个文件中的所有类、函数、常量、变量全都解释一遍赋值给 “模块名”。
from 模块名 import xxx (xxx可以是类,函数,常量等等)
第二种from 模块名 import xxx,这种直接使用模块下的某一个类,这样一次只能导入一个特定的类/函数/变量等,如果还想使用这个模块下的其他类,就得继续这样导入。实际上这种方式相当于直接把 “xxx” 这部分代码拿到当前文件下执行。
导入模块的本质就是把python文件解释一遍,导入包的本质就是执行该包下的__init__.py文件。
四、导入优化
import 模块名
def test1():
模块名.方法名() //第一次调用
print("in the test1")
def test2():
模块名.方法名() //第二次调用
print("in the test2")
//上述两段函数重复调用同一个方法,效率降低,如何优化?
from 模块名 import 方法名
def test1():
方法名()
print("in the test1")
def test2():
方法名()
print("in the test2")
五、模块的分类
1.标准库
a、time & datetime 模块
时间相关的操作,时间有三种表示方式:
①时间戳 1970年1月1日之后的秒,即:time.time()
②格式化的字符串 2019-11-11 11:11, 即:time.strftime('%Y-%m-%d')
③结构化时间 元组包含了:年、日、星期等... time.struct_time 即:time.localtime()
b、random 模块
import random
print(random.random()) #[0,1)之间的随机浮点数
print(random.randint(1,5)) #random.randint(a,b)用于生成[a,b]范围内的整数
print(random.randrange(1,5)) #random.randrange(start,stop,step),用于按指定步长获得一个[start,stop)a范围内随机数
print(random.choice('hello')) #random.choice()从序列中获取一个随机元素,这里可以是列表、元组、字符串
print(random.sample([1,2,3,4,5],3)) #random.sample(sequence,k),从指定序列中随机获取指定长度的片段
#随机整数
pr