今日内容回顾

  • 报的具体使用
  • 编程思想的转变
  • 软件开发目录规范
  • 常用内置模块之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. Vue子->父组件传值

    父组件引入: Import Test from'' 父页面使用: <Test ref="test" @m1="m2"><Test/> 子 ...

  2. slf4j、log4j2及logback使用

    slf4j.log4j2及logback使用 1.问题来源 之前看过关于slf4j.log4j2及logback的介绍,slf4j是门面,log4j2及logback是具体实现,仅使用slf4j门面是 ...

  3. 聊聊Vim的工作原理

    聊聊Vim的工作原理 日常里一直在用Vim这个编辑器,前阵子学习关于Linux中的fd(文件描述符)时,发现vim的进程描述符会比上一个自动加一,后续了解到vim的工作原理后,解开了这个疑问,所以记录 ...

  4. BGCN Rec:模型结构概述

    简单论述 BGCN将user-item interaction,user-bundle interaction和bundle-item affiliation 关联到统一的异构图中.以项目节点为桥梁, ...

  5. CentOS 7.9 安装 ELK

    一.CentOS 7.9 安装 elasticsearch-7.8.1 地址 https://www.elastic.co https://www.elastic.co/cn/downloads/pa ...

  6. Linux 下配置 hosts 并设置免密登录

    Linux 下配置 hosts 并设置免密登录 作者:Grey 原文地址: 博客园:Linux 下配置 hosts 并设置免密登录 CSDN:Linux 下配置 hosts 并设置免密登录 说明 实现 ...

  7. 4.ElasticSearch系列之基本概念

    1. 文档 ElasticSearch是面向文档的,文档是所有可搜索数据的最小单位 文档会被序列化成JSON格式,保存在ES中 每个文档都有一个unique ID #查看前10条文档,了解文档格式 P ...

  8. mujoco d4rl 安装问题

    最近mujoco免费了,属实爽歪歪,安装d4rl没有以前那么麻烦了(不知为何半年前我安装d4rl时走了那么多弯路) mujoco安装 在 https://mujoco.org/download 上面下 ...

  9. Linux基础_5_文件管理

    创建 touch 文件名 #创建文件 stat 文件名 #查看文件属性 touch -am 文件名 #更改文件的访问时间及修改时间 删除 rm -rf s/* #递归强制删除s目录下的所有内容(包括文 ...

  10. java:找不到符号

    出现这种情况的原因之一:实体类的字段修改过.实体类中的变量名修改.然而其他地方调用的字段名还是修改之前的变量.