常用内置模块之collections模块、时间模块、随机数random模块
今日内容回顾
- 报的具体使用
- 编程思想的转变
- 软件开发目录规范
- 常用内置模块之collection模块
- 常用内置模块之时间模块
- 常用内置模块之随机数模块
包的具体使用
1.在python2看看是否有_init_.py文件夹内没有的话python2不认为是或者模块包 而在python3则没有这么多规则,只有py文件有功能代码就是模块
# 如果只想用包中某几个模块 还是按照之前的导入方式 from aaa import md1, md2
# 如果直接导包名 import aa
导入包其实就是导下面的__init__.py文件 该文件内有什么名字就可以通过包名点什么名字
编程思想的转变
1.面条版阶段
所有的代码全部堆叠到一起
'''
第一个阶段可以看成是直接将所有的数据放在C盘
视频 音频 文本 图片
'''
2.函数版阶段
根据功能的不同封装不同的函数
'''
第二个阶段可以看成是将C盘下面的数据分类管理
视频文件夹 音频文件夹 文本文件夹 图片文件夹
'''
3.模块版阶段
根据功能的不同拆分成不同的py文件
'''
第三个阶段可以看成将C盘下的数据根据功能的不同划分到更合适的位置
系统文件夹 C盘
视频文件夹 D盘
图片文件夹 E盘
类似于开公司目的是为了资源的高效管理
'''
软件开发目录规范
1.文件及目录的名字可以变换 但是思想是不变的 分类管理
2.目录规范主要规定开发程序的过程中针对不同的文件功能需要做不同的分类
'''
myproject项目文件夹
1.bin文件夹>>> 主要存放项目启动文件
start.py 启动文件可放在bin目录下 也可以直接在项目根目录
2.conf文件夹>>> 主要存放项目配置文件
settings.py 里面存放项目的默认配置 一般是全大写
3.core文件夹>>> 主要存放项目的核心文件
src.py 里面存放项目的核心功能
4.interface文件夹>>> 主要存放项目接口文件
goods.py 根据具体业务逻辑划分对应的文件
user.py
account.py
5.db文件夹>>> 主要存放项目相关数据
userinfo.txt
db_handler.py 存放数据库操作相关的代码
6.log文件夹>>> 主要存放项目日志文件
log.log
7.lib文件夹>>> 主要存放公共功能
common.py
8.readme文件>>> 主要存放项目相关说明
9.requirements.txt文件>>> 主要存放项目所需模块及版本
'''
常用内置模块之collections模块
# 在内置数据类型(dict、list、set、tuple)的基础上 collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
3.Counter: 计数器,主要用来计数
4.OrderedDict: 有序字典
5.defaultdict: 带有默认值的字典
1.具名元组:namedtuple 生成可以使用名字来访问元素内容的tuple
tuple是元组可以表示不变的集合
如:一个点的二维坐标可以表示 p = (2, 3) 而若就看到(2, 3)很难表示出一个坐标
# 这时 namedtuple 表示二维坐标系
from collection import nametuple
point = namedtuple('点', ['x', 'y'])
生成点的信息
p1 = point(2, 4)
print(p1) # 点(x=2, y=4)
print(p1.x) # 2
print(p1.y) # 4
2.双端队列:deque 可以快速的从另外一侧追加和推出对象
list列表在存储数据式按索引访问数据值很快 但做插入和删除数据值就很慢 因为 list 是线性存储数据 当数据量大的时候 插入和删除效率就很低
# 这时 deque 实现高效插入操作和删除操作的列表 适用于队列和堆栈
deque 除了实现list的append()和pop()外
from collection import deque
q = deque(['a', 'b', 'c', 'd', 'e', 'f'])
q.append('g')
q.appendleft('z')
print(q) # deque(['z', 'a', 'b', 'c', 'd', 'e', 'f', 'g'])
3.有序字典:OrderedDict
使用dict字典时 键是无序的 做迭代时无法确定键的顺序
# 这时 OrderedDict 可以保持key的顺序
from collection import OrderedDict
l1 = {'a': 1, 'b': 2, 'c': 3}
dic = OrderedDict(l1)
print(dic) # OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(dic.keys()) # odict_keys(['a', 'b', 'c'])
di = OrderedDict()
di['z'] = 99
di['p'] = 66
di['f'] = 88
print(di) # OrderedDict([('z', 99), ('p', 66), ('f', 88)])
print(di.keys()) # odict_keys(['z', 'p', 'f']) key是有序的
4.带有默认值的字典:defaultdict
有如集合 [11,22,33,44,55,66,77,88,99,90]将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中 即: {'k1': 大于66 , 'k2': 小于66}
传统做法:
values = [11, 22, 33,44,55,66,77,88,99,90]
# my_dict = {'k1': [], 'k2': []}
my_dict = dict([('k1', []), ('k2', [])])
for value in values:
if value < 66:
my_dict.get('k1').append(value)
else:
my_dict.get('k2').append(value)
print(my_dict) # {'k1': [11, 22, 33, 44, 55], 'k2': [66, 77, 88, 99, 90]}
# 这时 defaultdict
from collections import defaultdict
values = [11, 22, 33,44,55,66,77,88,99,90]
my_dict = defaultdict(list)
for value in values:
if value > 66:
my_dict['k1'].append(value)
else:
my_dict['k2'].append(value)
print(my_dict)
常用内置模块之时间模块
1.import time
"""
三种时间表现形式
1.时间戳
秒数
2.结构化时间
主要是给计算机看的 人看不适应
3.格式化时间
主要是给人看的
"""
import time
# 时间戳
print(time.time()) # 1666173355.9952471
# 时间字符串 strftime
print(time.strftime('%Y-%m-%d %H-%M-%S')) # 2022-10-19 17-56-38
print(time.strftime('%Y/%m/%d %H:%M:%S')) # 2022/10/19 17:59:33
print(time.strftime('%Y-%m-%d %X')) # 2022-10-19 17:56:18
# 时间元组:localtime将一个时间戳转换为当前时区的struct_time
print(time.localtime()) # print(time.localtime()) # time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=11, tm_min=32, tm_sec=50, tm_wday=2, tm_yday=292, tm_isdst=0)
# 让程序原地阻塞指定的秒数
time.sleep(100)
2.import datetime
import datetime
print(datetime.datetime.now()) # 2022-10-19 18:08:13.680085
print(datetime.datetime.today()) # 2022-10-19 18:08:13.682081
print(datetime.date.today()) # 2022-10-19
'''
datetime: 年月日 时分秒
date: 年月日
time: 时分秒(后续会有此规律)
'''
from datetime import date, datetime
print(date.today()) # 2022-10-19
print(datetime.today()) # 2022-10-19 18:16:32.311378
print(datetime.utcnow()) # 2022-10-19 10:16:32.311377
import datetime
c = datetime.datetime(2099, 10, 23, 12, 20)
print('指定日期:', c) # 指定日期: 2099-10-23 12:20:00
from datetime import datetime
# 不规则的时间表示形式转换为标准的时间格式 strptime
a = datetime.strptime('2022/10/15', '%Y/%m/%d')
print(a) # 2017-09-30 00:00:00
b = datetime.strptime('2022年10月22日星期六', '%Y年%m月%d日星期六')
print(b) # 2022-10-22 00:00:00
c = datetime.strptime('2022年10月18日星期六22时50分20秒','%Y年%m月%d日星期六%H时%M分%S秒')
print(c) # 2022-10-18 22:50:20
# 时间差值 做定时任务
import datetime
a = datetime.date.today()
print(a) # 2022-10-19
b = datetime.timedelta(days=6) # 设置一个时间差6天
# (days可以是seconds秒数也可以是minutes分钟\hours小时\weeks星期)
print(a + b) # 2022-10-25 # 6天之后
e = datetime.datetime.today()
print(e) # 2022-10-19 18:33:42.648731
f = datetime.timedelta(minutes=30) # 设置时间差30分钟后
print(e + f) # 2022-10-19 19:03:42.648731
常用内置模块之随机数random模块
import random
print(random.random()) # 随机产生0到1之间的小数
print(random.randint(1, 10)) # 随机产生1到10之间的整数
print(random.randrange(1, 100, 2)) # 随机产生1到100之间的奇数
print(random.choice(['一等奖', '二等奖', '三等奖', '谢谢惠顾'])) # 随机抽取一个样本 '二等奖'
print(random.choices(['一等奖', '二等奖', '三等奖', '谢谢惠顾'])) # 随机抽取一个样本 ['二等奖']
print(random.sample(['jason', 'kevin', 'tony', 'oscar', 'jerry', 'tom'], 3)) # 随机抽指定个数的 ['tom', 'jerry']
l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
random.shuffle(l1) # 随机打乱数据集
print(l1)
'''产生图片验证码: 每一位都可以是大写字母 小写字母 数字 4位'''
def get_code(n):
code = ''
for i in range(n):
# 1.先产生随机的大写字母 小写字母 数字
random_upper = chr(random.randint(65, 90)) # 随机产生A到Z之间的字母
random_lower = chr(random.randint(97, 122)) # 随机产生a到z之间的字母
random_int = str(random.randint(0, 9)) # 随机产生0到9的数字转化成字符串才能拼接
# 2.随机三选一
temp = random.choice([random_upper, random_lower, random_int])
code += temp
return code
re = get_code(3)
print(re)
res = get_code(4)
print(res)
常用内置模块之collections模块、时间模块、随机数random模块的更多相关文章
- python学习笔记:第21天 常用内置模块之collections和time
目录 一.collections模块 二.时间模块 也可以在我的个人博客上阅读 一.collections模块 1. Counter Counter是⼀个计数器,主要⽤统计字符的数量,之前如果我们要统 ...
- python之随机数random模块
random模块:用于生成随机数 import random #random模块:用于生成随机数 li = [] for i in range(7): r = random.randrange(0,3 ...
- 第十八篇 模块与包--time&random模块&模块导入import(os.path.dirname(os.path.abspath(__file__)))
模块 在Python中, 一个.py文件就称为一个模块. 使用模块的好处: 1. 最大的好处就是大大提高了代码的可维护性 2. 编写代码不必从零开始.一个模块编写完毕,就可以被其他地方引用.在写其他程 ...
- 【Python】随机数random模块randint、shuffle、random、sample、choice、uniform、
1 ).random() 返回0<=n<1之间的随机实数n:2 ).choice(seq) 从序列seq中返回随机的元素:3 ).getrandbits(n) 以长整型形式返回n个随机位: ...
- python随机数random模块
需要 import random x=random.random() 产生 0 到 1 之间的随机浮点数 结果 0.005570080000840916 x=random.randint(1 ...
- Python 常用模块(1) -- collections模块,time模块,random模块,os模块,sys模块
主要内容: 一. 模块的简单认识 二. collections模块 三. time时间模块 四. random模块 五. os模块 六. sys模块 一. 模块的简单认识 模块: 模块就是把装有特定功 ...
- 模块之 time datetime random json pickle os sys hashlib collections
目录 1. time模块 1.1表示时间的几种方式: 1.2格式化字符串的时间格式 1.3不同格式时间的转换 2.datetim模块 3.random模块 4. json模块 4.1dumps.loa ...
- python常用模块之-random模块
random模块顾名思义就是生成随机数的模块. random模块有以下常见方法: 1,打印0-1之间的任意随机浮点数,不能指定区间. print(random.random()) 2,打印随机符点数, ...
- 软件开发目录规范、python常用内置模块
编程思想的转变 1.面条版阶段 所有的代码全部堆叠在一起.可以看成是直接将所有的数据放在C盘 视频.音频.文本.图片 2.函数版阶段 根据功能的不同封装不同的函数.可以看成是将C盘下的数 ...
随机推荐
- Alertmanager结合Slack使用
Slack作为一款即时通讯工具,协作沟通主要通过Channel(平台)来完成,用户可以在企业中根据用途添加多个Channel,并且通过Channel来集成各种第三方工具. 例如,我们可以为监控建立一个 ...
- 4_爬NMPA药监总局_动态加载_传ID
http://scxk.nmpa.gov.cn:81/xk/ import requests url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAc ...
- 【前端必会】tapable、hook,webpack的灵魂
背景 什么是tapable.hook,平时做vue开发时的webpack 配置一直都没弄懂,你也有这种情况吗? 还是看源码,闲来无聊又看一下webpack的源码,看看能否找到一些宝藏 tapable和 ...
- mac通过docker一键部署Nexus3
目录 mac通过docker一键部署Nexus3 一.前言 二.系统配置 三.安装步骤 1.Dockerhub查看镜像地址 2.一键安装 2.1.克隆脚本 2.2.安装程序 2.2.1.程序安装详情 ...
- 代码随想录第十三天 | 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素
第一题150. 逆波兰表达式求值 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 注意 两个整数之间的除法只保留整数部分. ...
- 最长公共前缀(Java)
编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:strs = ["flower","flo ...
- logback.xml详解
介绍 之前博文有专门介绍过基于Log4j Appender 实现大数据平台组件日志的采集, 本篇主要对java项目中经常会接触到的logback.xml文件的配置做一个介绍和总结. logback.x ...
- Linux基础_3_文件/文件夹权限管理
注:权限遮罩码: 控制用户创建文件和文件夹的默认安全设置,文件默认权限为666-umask的值,文件夹默认权限为777-umask的值. root默认0022,普通用户默认0002. 文件的默认权限不 ...
- .Net Core redis 调用报错 '6000 Redis requests per hour' 解决 6000 此调用限制
问题描述 redis 是一种基于内存,性能高效的 NoSQL 数据库,性能高主要就体现在数据交互耗时较短,能够段时快速的对用户的请求做出反应,所以在业务比较复杂或交互量需求大时,必然会超过 6000次 ...
- Windows7下驱动开发与调试体系构建——5.实战反调试标记位(NtGlobalFlag)
目录/参考资料:https://www.cnblogs.com/railgunRG/p/14412321.html <加密与解密>P670中,介绍了检查程序是否被调试的第二种方法:查看进程 ...