Day18软件开发目录规范
今日内容概要
- 包的具体使用
- 编程思想的转变
- 软件开发目录规范
- python常用内置模块
今日内容详细
包的具体使用
虽然python3对包的要求降低了 不需要__init__.py也可以识别 但是照顾兼容性最好还是得加上__int__.py
1.如果只想用包中的某几个模块 那么还是按照之前的导入方式即可>>>: from aaa import md1, md2
2.如果直接导入包名>>>: import aaa 导入包名就是导包下面的__init__.py文件,这个文件内有什么就可以通过包名点什么名字
编程思想的转变
1.面条版阶段(if elif ...else)
# 直接将所有的数据放在C盘
2.函数版阶段(根据功能的不同封装不同的函数)
# 将C盘下的数据分类管理
3.模块版阶段(根据功能不同拆分成不同的py文件)
# 将C盘下的数据功能的不同划分到更合适的位置 为的是资源的高效管理
软件开发目录规范
1.文件的目录名字可以改变 但是思想是不变的 文类管理
2.目录规范主要规定开发程序的过程中针对不同的文件功能需要不同的分类
1.bin文件夹 主要存放启动文件 eg:start.py
2.conf文件夹 主要存放项目配置文件 eg:settings.py
3.core文件夹 主要存放项目核心文件 eg:src.py
4.interface文件夹 主要存放接口文件 eg:user.py
5.db文件夹 主要存放项目相关数据 eg:user_info.py
6.log文件夹 主要存放项目日志文件 eg:log.log
7.lib文件夹 主要存放项目公共的功能 eg:commen.py
8.readme文件 主要存放项目相关说明(使用前先看此文件)
9.requirements.txt 主要存放所需模块及版本(名字不能写错,至关重要)
python常用内置模块>>>: collections
1.具名元组:nmaedtuple
from collections import namedtuple
point = namedtuple('点', ['X', 'Y'])
p1 = point(1, 2)
print(p1) # 点(X=1, Y=2)
print(p1.X) # 1
print(p1.Y) # 2
2.collections相关练习
from collections import namedtuple
card = namedtuple('扑克牌', ['num', 'color'])
c1 = card('A', '黑♠')
c2 = card('A', '红♥')
print(c1, c1.num, c1.color)
print(c2, c2.num, c2.color)
3.队列deque
队列:先进先出
堆栈:先进后出
它俩都是一边只能进另一边只能出
python常用内置模块>>>: 时间time
import time
print(time.time()) # 时间戳 1666169399.0213842
print(time.localtime()) # 当地时间
print(time.struct_time) # 结构化时间 是给计算机看的
print(time.strftime('%Y-%m-%d')) # - or / all is ok
print(time.strftime('%Y-%m-%d %H:%M:%S')) # %X 可以替代%H:%M:%S
time.sleep(10) # 让程序阻塞指定的秒数
import datetime
print(datetime.datetime.now()) # 2022-10-19 17:35:08.771628 年月日时分秒
print(datetime.datetime.today()) # 2022-10-19 17:35:08.771628 年月日时分秒
print(datetime.date.today()) # 2022-10-19 年月日
c = datetime.datetime(2017, 12, 22, 8, 30)
print('指定日期:', c) # 指定日期: 2017-12-22 08:30:00
from datetime import datetime
d = datetime.strptime('2017/9/30', '%Y/%m/%d')
print(d) # 2017-09-30 00:00:00
e = datetime.strptime('2017年9月30日星期六', '%Y年%m月%d日星期六')
print(e) # 2017-09-30 00:00:00
f = datetime.strptime('2017年9月30日星期六8时42分24秒', '%Y年%m月%d日星期六%H时%M分%S秒')
print(f) # 2017-09-30 08:42:24
import datetime
ctime = datetime.date.today()
print(ctime)
time_del = datetime.timedelta(days = 3)
print(ctime + time_del)
ctime = datetime.datetime.today()
print(ctime)
time_del = datetime.timedelta(minutes = 20)
print(ctime + time_del)
python常用内置模块>>>: 随机数random
import random
print(random.random()) # 随机产生0到1的之间的小数
print(random.randint(1, 6)) # 随机产生1到6之间的整数
print(random.randrange(1, 100, 3)) # 随机产生指定的整数
print(random.choice(['一等奖', '二等奖', '三等奖', '谢谢回顾'])) # 随机抽取任何一个样本 如一等奖
print(random.choices(['一等奖', '二等奖', '三等奖', '谢谢回顾'])) # 随机抽取任何一个样本 如['一等奖']
print(random.sample(['almira', 'lili', 'nini', 'linda'], 2)) # 随机抽取指定数样本['almira', 'linda']
l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
random.shuffle(l1) # 随机打乱数据集,洗牌
print(l1)
random 相关的面试题 # 产生图片验证码
import random
def get_code(n):
code = ''
for i in range(n):
# 1.先随机的大写字母 小写字母 数字
random_upper = chr(random.randint(65, 90)) # chr 能把数子转换成对应的字符
random_lower = chr(random.randint(97, 122))
random_int = str(random.randint(0, 9)) # str 可以把数字转换成字符串
# 2.随机三选一
temp = random.choice([random_upper, random_lower, random_int])
code += temp
return code
res = get_code(10)
print(res)
res = get_code(4)
print(res)