Python基础18

今日内容概要

  • 包的具体使用
  • 编程思想的转变
  • 软件开发目录规范
  • 常用内置模块

今日内容详细

包的具体使用

	虽然python3对包的要求降低了 不需要__init__.py也可以识别 但是为了兼容性考虑 最好还是加上__init__.py
1.如果只想用包中某几个模块 那么还是按照之前的导入方式即可
	from aaa import md1, md2
2.如果直接导入包名
	import aaa
	导入包名其实就是导包下面的__init__.py文件, 该文件内有什么名字就可以通过包名点什么名字调用  需要在__init__.py下导入包内的其他py文件


编程思想的转变

1.面条版阶段
	所有的代码全部堆叠在一起
'''第一个阶段可以看成是直接将所有的数据放在C盘  
	视频 音频 文本 图片 全部放在根目录下
'''
2.函数版阶段
	根据功能的不同封装成不同的函数
'''第二个阶段可以看成是将C盘下的数据进行分类管理 
	创建视频文件夹 音频文件夹 文本文件夹 图片文件夹 将对应的数据类型放在文件夹中
'''
3.模块版阶段
	根据功能的不同拆分成不同的py文件
'''第三个阶段可以看成是将C盘下的数据根据功能的不同划分到更合适的位置
	系统文件夹 存放在C盘
	视频文件夹 存放在D盘
	图片文件夹 存放在E盘
可以让资源更加的高效管理
'''

软件开发目录规范

1.文件及目录的名字可以变换 但是思想是不变的 分类管理
2.目录规范主要规定开发程序的过程中针对不同的文件功能需要做不同的分类
项目文件夹/
|-	bin文件夹/				主要存放项目启动文件
|		start.py		启动文件可以放在bin目录下也可以直接放在项目根目录
|-	conf文件夹/			主要存放项目配置文件
|		settings.py		里面存放项目的默认配置 一般都是全大写
|-	core文件夹/			主要存放项目核心功能
|		src.py			里面存放项目核心功能
|-	interface文件夹/		主要存放项目接口文件
|  		user.py			根据业务逻辑划分对应的文件
|  		goods.py
|-	db文件夹/				主要存放项目相关数据
|		userinfo.txt
|  		db_handler.py	存放数据库操作相关的代码
|-	log文件夹/				主要存放项目日志文件
|		log.log
|- 	lib文件夹/				主要存放项目公共功能
|		common.py
|-	requirements.txt文件	 主要存放项目所需模块及版本
|-	readme文件			 主要存放项目相关说明

常用内置模块

collections模块

1.具名元祖:namedtuple
	是 python 标准库 collections 中的工厂函数。它接受两个参数,第一个参数表示类的名称,
第二个参数是类的字段名。后者可以是可迭代对象,也可以是空格隔开的字符串
from collections import namedtuple
t1 = namedtuple('商品信息', ['品名', '价格']) 
t1 = namedtuple('商品信息', ('品名', '价格'))
t1 = namedtuple('商品信息', {'品名': '', '价格': ''})
t1 = namedtuple('商品信息',{'品名', '价格'})
t1 = namedtuple('商品信息', '品名 价格') # 一个字符串内用空格隔开
t2 = t1('娃哈哈', 99)
print(t2)   # 商品信息(品名='娃哈哈', 价格=99)

2.队列
	队列与堆栈
		队列:先进先出
		堆栈:先进后出


时间模块

'''
三种时间表现形式
	1.时间戳
		秒数
	2.结构化时间
		主要是给计算机看的 人看不适应
	3.格式化时间
		主要是给人看的
'''
import time
print(time.time())  # 打印时间戳
print(time.localtime()) # 打印结构化时间
print(time.strftime('%Y-%m-%d')) # 打印格式化时间
'''
%Y 年 %m 月 %d 日 %H 时 %M 分 %S 秒 %X 时分秒
中间可以用任意字符隔开
'''
time.sleep()  # 括号内填写数字 让程序运行到这原地阻塞指定时间 单位是秒

import datetime
print(datetime.datetime.now())  # 打印当前时间
print(datetime.datetime.today()) # 也是打印当前时间
print(datetime.date.today())  # 打印当前日期
print(datetime.datetime.utcnow())  # 打印世界标准时间
'''
datetime  年月日 时分秒
date  年月日
time  时分秒
'''
a = datetime.datetime(2022, 12, 22, 22, 22, 22)
print(a)  # 打印指定时间 括号内分别对应年月日时分秒 时分秒可以不传
b = datetime.datetime.strptime('2017/9/30','%Y/%m/%d')
print(b)  # 2017-09-30 00:00:00
# 将一个日期字符串转成datetime日期格式便于后期处理
time1 = datetime.datetime.today()
print(time1)
time2 = datetime.timedelta(minutes=10)  
print(time1 + time2)  # 让当前时间加10分钟

随机数模块

import random

print(random.random())  # 随机产生0到1之间的小数
print(random.randint(1, 6))  # 随机产生1到6之间的整数
print(random.randrange(1, 100, 2))  # 随机产生指定的整数
print(random.choice(['一等奖', '二等奖', '三等奖', '谢谢惠顾']))
# 随机抽取一个样本
print(random.choices(['一等奖', '二等奖', '三等奖', '谢谢惠顾']))
# 随机抽取一个样本 保留原本的数据类型
print(random.sample(['一等奖', '二等奖', '三等奖', '谢谢惠顾']), 2)
# 随机抽取指定样本数
l1 = [1, 2, 3, 4, 5, 6]
random.shuffle(l1) # 随机打乱数据集
print(l1)  # [1, 5, 4, 3, 6, 2]

'''小练习
产生图片验证码: 每一位都可以是大写字母 小写字母 数字  4位
'''
def get_code(num):
	code = ''
	for i in range(num):
		get_upper = chr(random.randint(65, 90))
		get_lower = chr(random.randint(97, 122))
		get_int = str(random.randint(0, 9))
		temp = random.choice([get_upper, get_lower, get_int])
		code += temp
	return code

res = get_code(4)
print(res)
posted @ 2022-10-19 19:16  LZJJJ  阅读(33)  评论(0)    收藏  举报