今日内容回顾

  • 报的具体使用
  • 编程思想的转变
  • 软件开发目录规范
  • 常用内置模块之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. (四)JPA - JQPL 实现增删改查

    (一)JPA的快速入门 建议在需要使用时,看看之前的文章,先把环境搭起来. 5.JPQL JPQL和SQL 1.JPQL和SQL很像,查询关键字都是一样的 2.唯一的区别是:JPQL是面向对象的 JP ...

  2. IC入门课第五课作业:完善 Microblog 前端(1、显示发布者的名字;2、增加新UI、3、关注其他学员的 canister)

    上周完成了 IC 入门课程第五课的作业 现将答案贴出,欢迎同学们参考,禁止抄袭作业哦 课程作业 (完善 microblog 前端) 1. 显示消息的发布者名字 a. 给 Message 增加 auth ...

  3. PHP全栈开发(二):MYSQL学习

    昨天进行了CentOS 7 下面的 LAMP搭建 今天学习一下MySQL的一些入门级操作 主要参考PHP中文网的"MySQL最新手册教程" http://www.php.cn/my ...

  4. 关于maven插件在Myeclipse中的使用

    出现了如下几个错误: 1.访问不到maven的中央仓库,插件下载失败,无法使用插件启动tomcat命令. 解决方法到 maven的配置文件中,一般在我的文档中的.m2文件中的settting.xml中 ...

  5. tListener监听器

    1.概念 监听器:专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动. Servlet监听器:Servlet规范中定义的一种特殊类,它用于 ...

  6. 5.ElasticSearch系列之文档的基本操作

    1. 文档写入 # create document. 自动生成 _id POST users/_doc { "user" : "shenjian", " ...

  7. 算法设计(动态规划应用实验报告)实现基于贪婪技术思想的Prim算法、Dijkstra算法

    一.名称 动态规划法应用 二.目的 1.贪婪技术的基本思想: 2.学会运用贪婪技术解决实际设计应用中碰到的问题. 三.要求 1.实现基于贪婪技术思想的Prim算法: 2.实现基于贪婪技术思想的Dijk ...

  8. python3使用libpcap库进行抓包及数据处理

    python版本:python 3.9 libpcap版本:1.11.0b7 python libpcap库是底层绑定c语言libpcap库的开发包,旨在提供python应用可访问的unix c li ...

  9. 剑指offer20题表示数值的字符串:这题实在是太优雅了

    目录 前言 一.憨憨初解 1.思路 2.代码 3.战绩 4.反思 二.看懂再解 1.思路 2.代码 3.C++版战绩 总结 前言 题目来源:https://leetcode.cn/problems/b ...

  10. 打地鼠(susliks) 方法记录

    [SDOI2011]打地鼠 题目描述 2020.4.29 数据更新. 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其 ...