今日内容回顾

  • 报的具体使用
  • 编程思想的转变
  • 软件开发目录规范
  • 常用内置模块之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模块的更多相关文章

  1. python学习笔记:第21天 常用内置模块之collections和time

    目录 一.collections模块 二.时间模块 也可以在我的个人博客上阅读 一.collections模块 1. Counter Counter是⼀个计数器,主要⽤统计字符的数量,之前如果我们要统 ...

  2. python之随机数random模块

    random模块:用于生成随机数 import random #random模块:用于生成随机数 li = [] for i in range(7): r = random.randrange(0,3 ...

  3. 第十八篇 模块与包--time&random模块&模块导入import(os.path.dirname(os.path.abspath(__file__)))

    模块 在Python中, 一个.py文件就称为一个模块. 使用模块的好处: 1. 最大的好处就是大大提高了代码的可维护性 2. 编写代码不必从零开始.一个模块编写完毕,就可以被其他地方引用.在写其他程 ...

  4. 【Python】随机数random模块randint、shuffle、random、sample、choice、uniform、

    1 ).random() 返回0<=n<1之间的随机实数n:2 ).choice(seq) 从序列seq中返回随机的元素:3 ).getrandbits(n) 以长整型形式返回n个随机位: ...

  5. python随机数random模块

    需要  import random x=random.random()    产生 0 到 1 之间的随机浮点数 结果  0.005570080000840916 x=random.randint(1 ...

  6. Python 常用模块(1) -- collections模块,time模块,random模块,os模块,sys模块

    主要内容: 一. 模块的简单认识 二. collections模块 三. time时间模块 四. random模块 五. os模块 六. sys模块 一. 模块的简单认识 模块: 模块就是把装有特定功 ...

  7. 模块之 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 ...

  8. python常用模块之-random模块

    random模块顾名思义就是生成随机数的模块. random模块有以下常见方法: 1,打印0-1之间的任意随机浮点数,不能指定区间. print(random.random()) 2,打印随机符点数, ...

  9. 软件开发目录规范、python常用内置模块

    编程思想的转变 1.面条版阶段 所有的代码全部堆叠在一起.可以看成是直接将所有的数据放在C盘        视频.音频.文本.图片 2.函数版阶段 根据功能的不同封装不同的函数.可以看成是将C盘下的数 ...

随机推荐

  1. Opengl ES之纹理贴图

    纹理可以理解为一个二维数组,它可以存储大量的数据,这些数据可以发送到着色器上.一般情况下我们所说的纹理是表示一副2D图,此时纹理存储的数据就是这个图的像素数据. 所谓的纹理贴图,就是使用Opengl将 ...

  2. C语言:类型存储

    类型存储 char: 可能为signed char 或 unsigned char ,根据编译器不同实现不同.占位一个字节.Signed char取值范围为-128~127, unsigned cha ...

  3. C++自学笔记 初始化列表 Initializer list

    初始化p A(){ p = 0;cout<<"A::A()"<<endl;} 初始化列表 Initializer list A():p(0){ cout&l ...

  4. count(*), count(1), count(列名)的区别

    1.从结果上来看 count(1)和count(*)之间没有区别,因为count(*)count(1)都不会去过滤空值,但count(列名)就有区别了,因为count(列名)会去过滤空值. 2.从执行 ...

  5. 关于多个 Kubernetes 集群指标的采集操作

    简介 在使用观测云期间,有时需要针对一个工作空间接入多个 Kubernetes 集群指标,通过观测云提供的全局 Tag 的方式来进行区分,大大提高了效率.下面是我总结的操作步骤. 当集群中只有一个采集 ...

  6. 实现etcd服务注册与发现

    转载自:实现etcd服务注册与发现 0.1.目录结构 . ├── api │   └── main.go ├── common │   └── common.go ├── docker-compose ...

  7. 22.通用视图GenericAPIView、属性和方法

    generics.ListCreateAPIView #源码 class ListCreateAPIView(mixins.ListModelMixin, mixins.CreateModelMixi ...

  8. java中HashMap的设计精妙在哪?

    摘要:本文结合图解和问题,教你一次性搞定HashMap 本文分享自华为云社区<java中HashMap的设计精妙在哪?用图解和几个问题教你一次性搞定HashMap>,作者:breakDaw ...

  9. 记录因Sharding Jdbc批量操作引发的一次fullGC

    周五晚上告警群突然收到了一条告警消息,点开一看,应用 fullGC 了. 于是赶紧联系运维下载堆内存快照,进行分析. 内存分析 使用 MemoryAnalyzer 打开堆文件 mat 下载地址:htt ...

  10. Spring Boot 中使用 tkMapper

    说明:基于 MyBatis 有很多第三方功能插件,这些插件可以完成数据操作方法的封装.数据库逆向工程的生成等. tkMapper 和 MyBatis-plus 都是基于 MyBatis 提供的第三方插 ...