2021.03.17模块
2021.03.17
总结
模块
什么是模块,什么是包
一个py文件就是一个模块,文件名就是模块名(如果一个模块想要被其他模块使用,模块名必须是标识符并且不是关键字)
一个包含__init__.py文件的文件夹就是一个包
使用其他中的内容
一个模块可以使用另外一个模块中所有的全局变量,但是使用前需要先导入模块
导入模块的语法:
import 模块名 - 导入指定模块,导入后通过’模块名.x’去使用模块中所有的全局变量
from 模块名 import 变量1, 变量2, 变量3, … - 导入指定模块,导入后可以直接使用import后面所有的变量
import 模块名 as 新模块名 - 导入模块并且对模块进行重命名,使用数据时候采用:‘新模块名.’
from 模块名 import 变量1 as 新变量1, 变量2, 变量3, …
from 模块名 import * - 导入模块中所有的全局变量
导入模块的原理:
不管是通过import还是from-import,导入模块的时候都会先进入指定模块,将模块中的代码全部执行
选择性的让模块中的代码在被导入的时候执行和不执行:
if name == ‘main’:
这个if语句外面的代码在被导入的时候会执行,里面的代码被导入的时候不会被执行
pass
导入包中的内容
import 包名 - 只有在自定义完__init__.py后才有用
import 包名.模块名 - 导入包中指定的模块, 使用模块中的内容的格式: 包名.模块名.x
from 包名 import 模块名1, 模块名2, …
from 包名.模块 import 变量1, 变量2,…
注意:import在导入模块或者包的时候,会先检查这个模块或者包之前是否已经导入过,如果已经导入过了不再重复导入
init.py文件的作用
当导入包或者包中的内容的时候,会自动执行包中的__init__.py文件
# import files# 打开文件
# import files.commonFile
# files.commonFile.open_file()# import files.commonFile as cm
# cm.open_file()# from files import commonFile, jsonFile
# commonFile.open_file()
# jsonFile.read_json()# from files.commonFile import open_file, close_file
# open_file()# import files
# files.open_file()# from files import open_file
# open_file()# import files
# files.commonFile.open_file()# import files
# files.delete_file()# from files import delete_file
# delete_file()import tools
import tools
工作涉及到的模块
- os模块 - 提供文件和文件夹操作的相关函数
os.getcwdb() - 返回当前工作目录
os.listdir(path) - 返回指定目录中所有的文件或者文件夹的名字
… - time和datetime - 提供操作时间相关的函数
- random - 提供随机相关函数
- hashlib - 提供hash加密相关函数(hash摘要)
random模块
import random# 1) random.randint(m, n) - 产生m到n的随机整数
print(random.randint(10, 20))# 2) random.random() - 产生 0 ~ 1的随机小数
print(random.random()) # 0 ~ 1
print(random.random() * 100) # 0 ~ 100
print(random.random() * 50 + 50) # 50 ~ 100
print(random.random() * 5 + 15) # 15 ~ 20# 3) random.shuffle(列表) - 将列表中元素的顺序随机打乱(洗牌)
nums = [23, 34, 'abc', True]
random.shuffle(nums)
print(nums)# 4)
# random.choice(序列) - 从序列中随机获取一个元素
# random.choices(序列, k=N) - 从序列中随机获取N个元素result = random.choice('abc3lo901')
print(result)nums = [23, 34, 'abc', 20, 3, 4]
result = random.choices(nums, k=2)
print(result)
time模块
import time
- 什么是时间戳
时间戳:用一个时间到1970年1月1日0时0分0秒(格林威治时间)的时间差来表示一个时间, 单位是秒 (用时间差来表示时间)
时间戳的优点:a.存储时间戳比存储字符串时间消耗的内存要小很多 b. 加密和解密更容易
# 1) time() - 获取当前时间(时间戳)
t1 = time.time()
print(t1) # 1615966804.79146 (4字节~5字节)# '2021-3-17 03:50:00' (18字节)# 2)
# time.localtime() - 获取当前本地时间(结构体时间)
# time.localtime(时间戳) - 将时间戳对应的时间转换成结构体时间
t2 = time.localtime()
print(t2)t3 = time.localtime(0)
print(t3)t4 = time.localtime(1615966804.79146)
print(t4)
print(t4.tm_year, t4.tm_mon)# 3)time.sleep(时间) - 让程序睡眠指定时间,单位秒
print('=======')
time.sleep(1)
print('+++++++')# 2. datetime - time、datetime、date
from datetime import time, datetime, date, timedelta# 1) 获取当前时间
t5 = datetime.now()
print(t5) # 2021-03-17 16:36:54.297076
print(t5.year, t5.month, t5.hour)t6 = date.today()
print(t6) # 2021-03-17# 2) 时间的加减操作
print('当前时间:', datetime.now())
# 10天前:
print('10天前:', t5 - timedelta(days=10)) # 2021-03-07 16:42:01.363135
# 20天前
print('20天前', t5 - timedelta(days=20)) # 2021-02-25 16:42:36.397193print('1个小时前:', t5 - timedelta(hours=1))
print('2个小时后:', t5 + timedelta(hours=2))
print('47个小时后:', t5 + timedelta(hours=47))
print('2小时30分后:', t5 + timedelta(hours=2, minutes=30))t6 = t5 - timedelta(days=1, hours=1)
print(t6, t6.year, t6.month, t6.day, t6.hour, t6.minute, t6.second)
hash加密算法 - md5、sha相关
import hashlib
hash加密的特点:
a. 不可逆:无法通过hash算法加密得到密文获取到原数据
b. 相同的数据通过相同的算法得到摘要(密文)是一样的
c. 不同长度是数据通过相同的算法得到的摘要(密文)的长度一样
# 2.生成数据摘要(加密)
# 1) 根据算法创建hash对象: hashlib.算法名()
# 常用算法:md5、shaX
hash_obj = hashlib.md5()# 2)添加原文
# hash对象.update(需要加密的数据)
# 注意:加密数据的类型必须bytes(相当于python中二进制数据)
hash_obj.update('123456'.encode())# 3)获取摘要(获取密文)
# hash对象.hexdigest()
result = hash_obj.hexdigest()
print(result) # e10adc3949ba59abbe56e057f20f883e
2021.03.17模块相关推荐
- 2021.03.17 pokémon小游戏开发记录与周总结
2021.03.17 pokémon小游戏开发记录与周总结 此篇仅包含部分项目代码,只是个人的学习总结. 文章目录 2021.03.17 pokémon小游戏开发记录与周总结 前言 一.前期准备 二. ...
- 2021.03.24正则匹配符号
2021.03.24 正则表达式 from re import fullmatch 正则是一种用来处理文本数据的一种工具.(一般用于处理复杂的文本问题) 1)检测输入的数据是否是手机号? 2)检查输入 ...
- 2021.03.30【2021省赛】模拟 比赛总结
2021.03.30[2021省赛]模拟 比赛总结 地址: https://gmoj.net/senior/#contest/home/3350 T1: 神奇纸牌(uno) T2: 凌乱平衡树 (tr ...
- 李嘉骐:03 PyTorch模块与基础实战
深入浅出Pytorch 03 PyTorch模块与基础实战 内容属性:深度学习(实践)专题 航路开辟者:李嘉骐.牛志康.刘洋.陈安东 领航员:叶志雄 航海士:李嘉骐.牛志康.刘洋.陈安东 开源内容:h ...
- Interesting Finds: 2008.03.17
.NET: LINQ Framework Design Guidelines 使用 Visual Studio 分析器找出应用程序瓶颈 Add Support for "Set" ...
- [2021.1.17多校省选模拟4]T1(莫比乌斯反演/组合数学/枚举倍数)
[2021.1.17多校省选模拟4]T1 一般人都会想着去枚举直线的斜率,但是枚举斜率之后就会产生多条直线,并且这些直线的长度不一,难以快速求解,所以我们考虑换一种方法枚举. 枚举最远点对的横纵坐标之 ...
- Go、Rust、C++和Zig语言的生产力对比 | Gopher Daily (2021.03.28) ʕ◔ϖ◔ʔ
每日一谚:Goroutines and channels are big ideas. They're tools for program construction. Go技术生态 掉入Go nil坑 ...
- 2021.03青少年软件编程(Python)等级考试试卷(二级)
2021.03青少年软件编程(Python)等级考试试卷(二级) 一.单选题(共25题,共50分) 1.对于字典infor = {"name":"tom", & ...
- Cocos2dx游戏源码合集(BY懒骨头+持续更新+2014.03.17)
懒骨头(http://blog.csdn.net/iamlazybone QQ:124774397 青岛) 有很多同学问源码,干脆出个索引贴,以后持续更新 ====================== ...
最新文章
- 非线性方程组牛顿迭代法matlab,matlab实现牛顿迭代法求解非线性方程组
- quartz 分布式_6大分布式定时任务对比
- 网管必看的好东东(一)
- IIS部署asp.net core webapi
- 家电换新就现在 国美发放“年中惠民消费大补贴”
- [BZOJ 2243] 染色
- vue ui 启动,浏览器报错Unexpected token
- Yii2 的 redis 应用
- nginx利用proxy_cache来缓存文件
- python读excel两列为字典_用python读取Excel并保存字典?一两行代码完成骚操作
- jQuery自动加载更多程序
- 搭建Ubuntu下c/c++编译环境
- 多目标蚁群算法路径规划(一)-----从数据设计到毕业论文系列
- 图的表示(Adjacency List + Adjacency Matrix)
- 2 简单使用原形工具Axure RP
- 假期培训第一阶段的总结和第二阶段的总结
- 香侬科技提出中文字型的深度学习模型Glyce,横扫13项中文NLP记录
- 《阿里铁军》带给我的启发和感悟
- 说极路由牛逼的人们,你们用过Tomato DualWAN吗?(一)
- Android开发——贝塞尔曲线解析
热门文章
- 数据结构第六次上机实验
- simulink的Spectrum Analyzer(功率谱密度)
- linux汇编伪指令大全,ARM汇编伪指令
- 【报告分享】2021中国养老服务市场洞察-易观智库(附下载)
- 吴建国 安徽大学 计算机学院,安徽大学计算机科学与技术学院硕士生导师:谢莹副教授...
- 清理VS工程的ipch和sdf文件
- 计算火车运行时间(c语言)
- 平面上的点——Point类 (I)
- Java中如何通过键盘输入一个数组以及创建方式
- 【数学归纳法】【错位排序】Number Theory Special Training T4 derange 题解