包和模块
模块
- 模块
python中一个py文件就是一个模块
- 模块使用
"""
前提: 被使用的模块的模块名(py文件的文件名)必须符合变量名的要求(是标识符, 不是关键字)
能被使用的内容: 所有的全局变量
怎么用: 使用别的模块中的内容前必须先导入模块
"""
- 导入模块
"""
1) import 模块名 - 导入指定模块; 导入后可以通过'模块名.xxx'的方式使用模块中所有全局变量
2) from 模块名 import 变量名1, 变量名2, ... - 导入指定模块指定变量; 导入后可以直接使用指定变量
3) form 模块名 import * - 导入指定模块中所有的变量; 导入后可以直接使用所有变量
4) import 模块名 as 新模块名 - 直接导入指定模块并且对模块进行重命名, 用新模块名代替原模块名使用模块
5) from 模块名 import 变量名 as 新变量名1, 变量名2, 变量名3 as 新变量名3...
"""
导入原理与阻止导入
- 导入原理
"""
不管以什么样的方式导入模块, 导入模块的时候系统会自动进入模块, 执行模块中所有的代码
"""
- 阻止导入
"""
因为在导入模块的时候默认会执行模块中所有的代码, 就会导致有些完全没有必要在导入的时候执行的代码被执行
阻止导入 - 如果希望导入模块的时候, 某些代码可以不执行, 就需要取阻止代码在被导入的时候执行
阻止方法 - 在被导入的模块内部进行特殊处理: 需要阻止的代码放到if __name__ == '__main__'条件语句里面
(如果不是作为主程序执行就不执行)
"""
包
- 包
存放_init_.py文件的文件夹
- 使用包(文件夹)中的内容
"""
方法1: import 包名 - 直接导入包, 导入后可以通过包.xx的方式直接使用__init__.py中所有内容
方法2: import 包名.模块名 - 导入指定包中的指定模块, 导入后可以通过'包名.模块名.xxx'来使用指定模块中的所有全局变量
方法3: from 包名 import 模块名1 as 新模块名1, 模块名2, 模块名3 as 新模块名3, ...(使用:模块名.模块中的全局变量)
方法4: from 包名 import 变量名1 as 新变量名1, 变量名2, 变量名3, ...(__init__.py中的全局变量)
注意: from 包名 import * - 导入包中__init__.py文件中所有的全局变量
方法5: from 包名.模块名 import 变量名1 as 新变量名1, 变量2, ... - 导入指定模块中的指定全局变量
"""
数学模块
math - 普通数字对应的数学模块
cmath - 复数对应的数学模块
补充复数 - python支持复数
格式: a + bj
- 浮点转整数
- int(浮点数) - 去尾取整(直接保留整数部分)
- math.ceil(浮点数) - 向大取整
- math.floor(浮点数) - 向小取整
- round(浮点数) - 四舍六入五成双
- 求绝对值
- abs(数字) - 系统函数, 原数据类型
- fabs(数字) - 都会变成浮点数
随机模块
-
创建随机整数: randint(a, b) - 产生[a, b]的随机整数
-
创建随机小数:random() - 产生[0, 1)的随机小数
-
在指定的等差数列中随机获取一个数: randrange(M, N, step), 随机取值范围[M, N)
-
洗牌: shuffle(列表) - 将列表中元素的顺序随机打乱
-
抽牌:
-
choice(序列) - 从指定序列中随机获取一个元素(有放回)
-
抽多张牌, 有放回, choices()
choices(序列) - 从指定序列中随机获取一个元素, 返回值为列表
choices(序列, k=次数) - 从指定序列列中随机获取指定个数元素, 返回值为列表
choices(序列, k=次数, weight=权重列表) - 规定指定序列中的元素权重, 并从指定序列中随机获取指定个数元素, 返回值为列表
-
无放回 - 3.9以前版本只有两个参数, 少了个counts
random.sample(序列, k=次数, counts=权重列表)
-
time模块
- time() - 获取当前时间, 返回的是时间戳
"""
时间戳 - 通过保存一个时间到1970年1月1日0时0分0秒(格林威治时间)之间的时间差(单位: 秒)来保存一个时间值
使用时间戳保存时间的好处:
a. 节约内存
'2022-4-27 17:43:00' - 18个字节的内存
4个字节 + 浮点 + 3个字节
b. 方便加密
"""
- locatime() - 获取本地当前时间, 返回的是结构体时间
- locatime(时间戳) - 将时间戳转换成结构体时间(本地的)